Pandas统计分析

pandas数据的基本统计分析

和numpy的函数近似

dates = pd.date_range('20130101',periods=10)
dates
df = pd.DataFrame(np.random.randn(10,4),index=dates,columns=['A','B','C','D'])
df

df.describe() #快速统计结果
df.mean() # 按列求平均值
df.mean(1) # 按行求平均值

 

基本统计分析函数

  • .describe() 针对0轴(列)的统计汇总,计数/平均值/标准差/最小值/四分位数/最大值
  • .sum() 计算数据的总和,按0轴计算(各行计算),下同,要按列计算参数1
  • .count() 非NaN值数量
  • .mean() .median() .mode() 计算数据的算数平均值/算数中位数/众数
  • .var() .std() 计算数据的方差/标准差
  • .min() .max() 计算数据的最小值/最大值

只适用于series:

  • .argmin(),.argmax() 计算数据最大值/最小值所在位置的索引位置(自动索引,用她是因为很容易切片等操作)
  • .idxmin(),.idxmax() 计算数据最大值/最小值所在位置的索引(自定义索引)
a = pd.Series([9,8,7,6],index=['a','b','c','d'])
a
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b

a.describe()
type(a.describe()) #series对象
a.describe()['count']

b.describe() #默认0轴运算
type(b.describe()) #dataframe对象

#返回横行数据,series
b.describe().loc['max']
b.describe().iloc[7]

#返回一列值,这里第2列
b.describe()[2]
#b.describe()[2]
b.describe().loc[:,2]

 


数据的累计统计分析

  • 对序列的前1-n个数累计运算
  • 可减少for循环的使用

累计统计分析函数,适用于series和dataframe类型

  • .cumsum() 依次给出前1/2/.../n个数的和
  • .cumprod() 依次给出前1/2/.../n个数的积
  • .cummax() 依次给出前1/2/.../n个数的最大值
  • .cummin() 依次给出前1/2/.../n个数的最小值
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b

b.cumsum() #列的累加和
b.cumprod() #列的累加积

 


滚动计算(窗口计算)函数

适用series/dataframe

  • .rolling(w).sum() 依次计算相邻w个元素的和
  • .rolling(w).mean() 依次计算相邻w个元素的算数平均值
  • .rolling(w).var() 依次计算相邻w个元素的方差
  • .rolling(w).std() 依次计算相邻w个元素的标准差
  • .rolling(w).min .max() 依次计算相邻w个元素的最小值/最大值
b.rolling(2).sum() #纵向列,以两个元素为单位,做求和运算
b.rolling(3).sum()