• 0

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

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

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()

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

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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
"""

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن