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

حساب بعض القيم الإحصائية كالمتوسط لكل مجموعة من البيانات في pandas

Mohamed Elnemr

السؤال

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...