اذهب إلى المحتوى

السؤال

نشر

لدي مجموعة من البيانات التالية

In [2]: df
Out[2]: 
  col1 col2  col3  col4  col5  col6
0    A    B  0.20 -0.61 -0.49  1.49
1    A    B -1.53 -1.01 -0.39  1.82
2    A    B -0.44  0.27  0.72  0.11
3    A    B  0.28 -1.32  0.38  0.18
4    C    D  0.12  0.59  0.81  0.66
5    C    D -0.13 -1.65 -1.64  0.50
6    C    D -1.42 -0.11 -0.18 -0.44
7    E    F -0.00  1.42 -0.26  1.17
8    E    F  0.91 -0.47  1.35 -0.34
9    G    H  1.48 -0.63 -1.14  0.17

 أود عمل تجميع لها في شكل مجموعات باستخدام  groupby ثم حساب بعض القيم الإحصائية لكل مجموعة، حاولت استخدام الكود التالي لكنه لم يفلح:

df['col1','col2','col3','col4'].groupby(['col1','col2']).mean()

كيف يمكن أن أقوم بهذا؟

Recommended Posts

  • 0
نشر

يمكنك إستخدام الدالة agg لحساب عدة قيم للمجموعات، وذلك بعد عمل groupby لها كالكود التالي:

df[['col1', 'col2', 'col3', 'col4']].groupby(['col1', 'col2']).agg(['mean', 'count'])

كمثال للبيانات الخاصة بك، يمكنك تطبيق بعض الحسابات على المجموعات التي نقوم بانشاءها كالتالي:

In [5]: (df
   ...: .groupby(['col1', 'col2'])
   ...: .agg({
   ...:     'col3': ['mean', 'count'], 
   ...:     'col4': ['median', 'min', 'count']
   ...: }))
Out[5]: 
            col4                  col3      
          median   min count      mean count
col1 col2                                   
A    B    -0.810 -1.32     4 -0.372500     4
C    D    -0.110 -1.65     3 -0.476667     3
E    F     0.475 -0.47     2  0.455000     2
G    H    -0.630 -0.63     1  1.480000     1

هنا قمنا بعمل groupby للأعمدة الأولى والثانية، ثم حساب المتوسط وعدد للعناصر في العمود الثالث وحساب المتوسط الحسابي وأقل قيمة وكذلك عدد العمود الرابع.

  • 0
نشر

يمكنك حساب كل المعاملاتا الاحصائية بالطريقة التالية:

import numpy as np
keys = np.array([
        ['A', 'B'],
        ['A', 'B'],
        ['A', 'B'],
        ['A', 'B'],
        ['C', 'D'],
        ['C', 'D'],
        ['C', 'D'],
        ['E', 'F'],
        ['E', 'F'],
        ['G', 'H'] 
        ])
df = pd.DataFrame(
  np.hstack([keys,np.random.randn(10,4).round(2)]), 
  columns = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']
)
df[['col3', 'col4', 'col5', 'col6']] = df[['col3', 'col4', 'col5', 'col6']].astype(float)
# الآن لحساب ماتريده
df[['col1', 'col2', 'col3', 'col4']].groupby(['col1', 'col2']).agg(['mean',"median", 'count',"std","min","max"])
"""
    col3                                    col4
		mean 	median 	count 	std 	min 	max 	mean 	median 	count 	std 	min 	max
col1 	col2 												
A 	B 	0.567500 	0.685 	4 	1.280088 	-0.96 	1.86 	0.205 	0.10 	4 	1.391534 	-1.34 	1.96
C 	D 	-0.086667 	-0.040 	3 	0.641275 	-0.75 	0.53 	0.160 	0.58 	3 	1.187097 	-1.18 	1.08
E 	F 	0.310000 	0.310 	2 	1.173797 	-0.52 	1.14 	-1.140 	-1.14 	2 	0.098995 	-1.21 	-1.07
G 	H 	0.640000 	0.640 	1 	NaN 	0.64 	0.64 	0.410 	0.41 	1 	NaN 	0.41 	0.41
"""

كما يمكنك استخدام الدالة describe:

df[['col1', 'col2', 'col3', 'col4']].groupby(['col1', 'col2']).describe()

كما بمكنك استخدام الدالةvalue_counts لمعرفة عدد عناصر كل مجموعة :

df[['col1', 'col2']].value_counts()
"""
col1  col2
A     B       4
C     D       3
E     F       2
G     H       1
dtype: int64
"""

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...