2014-03-06 214 views
24

我有以下形式的數據幀(例如)計算彙總統計

shopper_num,is_martian,number_of_items,count_pineapples,birth_country,tranpsortation_method 
1,FALSE,0,0,MX, 
2,FALSE,1,0,MX, 
3,FALSE,0,0,MX, 
4,FALSE,22,0,MX, 
5,FALSE,0,0,MX, 
6,FALSE,0,0,MX, 
7,FALSE,5,0,MX, 
8,FALSE,0,0,MX, 
9,FALSE,4,0,MX, 
10,FALSE,2,0,MX, 
11,FALSE,0,0,MX, 
12,FALSE,13,0,MX, 
13,FALSE,0,0,CA, 
14,FALSE,0,0,US, 

如何使用熊貓來計算每一列的彙總統計(列數據類型是可變的,某些列目前沒有任何信息

然後返回形式的一個數據幀:於是就

columnname, max, min, median, 

is_martian, NA, NA, FALSE 

+0

您可以調用'describe()'輸出數據幀的一些統計信息 – EdChum

回答

51

describe可以給你想要的,否則,您可以執行使用GROUPBY聚合的一切,傳遞的總比分功能列表:http://pandas.pydata.org/pandas-docs/stable/groupby.html#applying-multiple-functions-at-once

In [43]: 

df.describe() 

Out[43]: 

     shopper_num is_martian number_of_items count_pineapples 
count  14.0000   14  14.000000    14 
mean  7.5000   0   3.357143     0 
std   4.1833   0   6.452276     0 
min   1.0000  False   0.000000     0 
25%   4.2500   0   0.000000     0 
50%   7.5000   0   0.000000     0 
75%  10.7500   0   3.500000     0 
max  14.0000  False  22.000000     0 

[8 rows x 4 columns] 

注意某些列不能概括爲有總結他們沒有邏輯的方式,包含字符串數據

根據自己的喜好,如果你喜歡,你可以調換結果實例列:

In [47]: 

df.describe().transpose() 

Out[47]: 

       count  mean  std min 25% 50% 75% max 
shopper_num   14  7.5 4.1833  1 4.25 7.5 10.75  14 
is_martian   14   0   0 False  0 0  0 False 
number_of_items  14 3.357143 6.452276  0  0 0 3.5  22 
count_pineapples 14   0   0  0  0 0  0  0 

[4 rows x 8 columns] 
0

爲了明確@ EdChum的一個點根據文檔,可以使用df.describe(include='all')來包含對象列。它不會提供許多統計信息,但會提供幾條信息,包括計數,唯一值的數量,最高值。這可能是一個新功能,我不知道,因爲我是一個相對較新的用戶。

1

現在有pandas_profiling程序包,它是df.describe()的更完整替代程序。

如果您的熊貓數據框是df,下面將返回一個完整的分析,包括一些關於缺失值,偏度等的警告。它還提供了直方圖和相關性圖。

import pandas_profiling 
pandas_profiling.ProfileReport(df) 

查看詳細介紹了用法。