Pandas 描述和汇总统计
pandas 提供了很多常用的数学和统计方法,其中大部分都属于约简和汇总统计,用于从Series 中提取单个值(如sum或mean)或从DataFrame的行或列中提取一个 Series。
mean()
平均值 median()
中位数 max()
最大值 min()
最小值 sum()
求和 std()
标准差
Series类型独有的方法: argmax()
最大值的位置 argmin()
最小值的位置
DataFrame的sum和mean方法
a = [[1,np.nan,9],[2,8,3],[3,5,np.nan]]
data = DataFrame(a,index=["a","b","c"],columns=["one","two","three"])
print(data)
'''
one two three
a 1 NaN 9.0
b 2 8.0 3.0
c 3 5.0 NaN
'''
#对列求和
print(data.sum())
'''
one 6.0
two 13.0
three 12.0
'''
#对行求和
print(data.sum(axis=1))
'''
a 10.0
b 13.0
c 8.0
'''
#对行求平均值,默认排除NaN值
print(data.mean(axis=1))
'''
a 5.000000
b 4.333333
c 4.000000
'''
#对行求平均值,禁用自动排除NaN值
print(data.mean(axis=1,skipna=False))
'''
a NaN
b 4.333333
c NaN
'''
统计 .idxmax(), .idxmin(), .cumsum()
上面的操作都是对于列,如果想要对行进行操作,只需要在方法中设置axis参数为1即可。
a = [[1,np.nan,9],[2,8,3],[3,5,np.nan]]
data = DataFrame(a,index=["0","1","2"],columns=["a","b","c"])
print(data)
'''
a b c
0 1 NaN 9.0
1 2 8.0 3.0
2 3 5.0 NaN
'''
# 返回每一列中最大值的行索引
print(data.idxmax())
'''
a 2
b 1
c 0
dtype: object
'''
#返回每一列中最小值的行索引
print(data.idxmin())
'''
a 0
b 2
c 1
dtype: object
'''
#对每列的值进行累加
print(data.cumsum())
'''
a b c
0 1.0 NaN 9.0
1 3.0 8.0 12.0
2 6.0 13.0 NaN
'''
数据描述
DataFrame
df.describe()
a = [[1,np.nan,9],[2,8,3],[3,5,np.nan]]
data = DataFrame(a,index=["0","1","2"],columns=["a","b","c"])
print(data)
'''
a b c
0 1 NaN 9.0
1 2 8.0 3.0
2 3 5.0 NaN
'''
#列出DataFrame的描述
'''
四分位数用于绘制箱线图判断是否为异常值
count:该列(行)非NA值的个数
mean :该列(行)的均值
std :该列(行)的方差
25% :上四分位数
50% :非NA值的平均数
75% :下四分位数
max :最大值
'''
print(data.describe())
'''
a b c
count 3.0 2.00000 2.000000
mean 2.0 6.50000 6.000000
std 1.0 2.12132 4.242641
min 1.0 5.00000 3.000000
25% 1.5 5.75000 4.500000
50% 2.0 6.50000 6.000000
75% 2.5 7.25000 7.500000
max 3.0 8.00000 9.000000
'''
Series
如果值是数值型的描述与DataFrame一致,
s = Series(["a","b","b","d"])
print(s)
'''
0 a
1 b
2 b
3 d
'''
print(s.describe())
'''
count 4
unique 3
top b
freq 2
'''
argmax(), argmin(),.tolist()
argmax()
某一列最大值的位置 argmin()
最小值的位置,.tolist()
tolist()转换成list类型
# coding=utf-8
import numpy as np
import pandas as pd
# 创建DataFrame
df = pd.DataFrame(np.arange(12, 32).reshape((5, 4)), index=["a", "b", "c", "d", "e"], columns=["WW", "XX", "YY", "ZZ"])
print(df)
'''
WW XX YY ZZ
a 12 13 14 15
b 16 17 18 19
c 20 21 22 23
d 24 25 26 27
e 28 29 30 31
'''
# mean()平均值 median()中位数 max()最大值 min()最小值 sum()求和 std()标准差
print(df.mean()) # 每一列平均值 (Series类型)
'''
WW 20.0
XX 21.0
YY 22.0
ZZ 23.0
dtype: float64
'''
print(df["YY"].mean()) # 22.0 指定列的平均值
print(df["YY"]) # Series类型
YY_list = df["YY"].tolist() # tolist()转换成list类型
print(YY_list) # [14, 18, 22, 26, 30]
print(len(YY_list)) # 5
print(len(set(YY_list))) # set集合可以去重
print(df["YY"].unique()) # [14 18 22 26 30] unique()自动去重(ndarray类型)
print(df.max()) # 每一列的最大值 Series类型。 min()最小值
'''
WW 28
XX 29
YY 30
ZZ 31
dtype: int64
'''
# argmax()某一列最大值的位置 argmin()最小值的位置
print(df["YY"].argmax()) # e