【求和】
DataFrame.sum([axis,skipna,level,...])
axis=1表示按行相加,axis=0表示按列相加(默认)
skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换
NaN表示非数值、非数字值
pandas会为缺少的值自动分配NaN值
import pandas as pd
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]]
index = [1, 2, 3]
columns = ['语文', '数学', '英语']
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
df['总成绩']=df.sum(axis=1)
print(df)
语文 数学 英语 总成绩
1 110 105 99 314
2 105 88 115 308
3 109 120 130 359
【求平均值】
DataFrame.mean([axis,skipna,level,...])
axis=1表示按行相加,axis=0表示按列相加(默认)
skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换
level表示索引层级
返回值,返回Series对象,行/列的平均值数据
import pandas as pd
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115]]
index = [1, 2, 3, 4]
columns = ['语文', '数学', '英语']
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
new = df.mean()
df = df.append(new, ignore_index=True) # 不使用index标签
print(df)
语文 数学 英语
0 110.0 105.0 99.000000
1 105.0 88.0 115.000000
2 109.0 120.0 130.000000
3 112.0 115.0 NaN
4 109.0 107.0 114.666667
【求最大值】
DataFrame.max([axis,skipna,level,...])
axis=1表示按行相加,axis=0表示按列相加(默认)
skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换
level表示索引层级
返回值,返回Series对象,行/列的平均值数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115]]
index = [1, 2, 3, 4]
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
new = df.max()
df = df.append(new, ignore_index=True) # 不使用index标签
print(df)
语文 数学 英语
0 110.0 105.0 99.0
1 105.0 88.0 115.0
2 109.0 120.0 130.0
3 112.0 115.0 NaN
4 112.0 120.0 130.0
【求最小值】
DataFrame.min([axis,skipna,level,...])
axis=1表示按行相加,axis=0表示按列相加(默认)
skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换
level表示索引层级
返回值,返回Series对象,行/列的平均值数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115]]
index = [1, 2, 3, 4]
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
new = df.min()
df = df.append(new, ignore_index=True) # 不使用index标签
print(df)
语文 数学 英语
0 110.0 105.0 99.0
1 105.0 88.0 115.0
2 109.0 120.0 130.0
3 112.0 115.0 NaN
4 105.0 88.0 99.0
【求中位数】
# 中位数,又称中值,是指按顺序排列的一组数据中位于中间位置的数,不受异常值的影响
# 如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数
DataFrame.median(axis=None,skipna=None,level=None,numeric_only=None,**kwargs)
axis=1表示行,axis=0表示列,默认为None(无)
skipna布尔型,表示计算结果是否排队了NaN/Null值,默认值为True
level表示索引层级,默认为无
numeric_only,仅数字,布尔型,默认无
**kwargs:要传递给函数的附加关键字参数
返回值,返回Series或DataFrame对象
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, columns=columns)
print(df)
print(df.median())
语文 数学 英语
0 110 120 110
1 130 130 130
2 130 120 130
语文 130.0
数学 120.0
英语 130.0
dtype: float64
【求众数】
# 众数,是一组数据中出现最多的数
DataFrame.mode(axis=0,numeric_only=False,dropna=True)
axis=1表示行,axis=0表示列,默认为0
numeric_only,仅数字,布尔型,默认False。如果为True,则仅适用于数字列
dropna,是否删除缺失值,布尔型,默认为True
返回值,返回DataFrame对象
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, columns=columns)
print(df)
print(df.mode()) # 三科成绩的众数
print(df.mode(axis=1)) # 每一行的众数
print(df['数学'].mode()) # ‘数学’的众数
语文 数学 英语
0 110 120 110
1 130 130 130
2 130 120 130
语文 数学 英语
0 130 120 130
0 110
1 130
2 130
0 120
【求方差】(无偏样本方差,即方差和/样本数-1)
# NumPy计算的方差(样本方差本身,即方差和/样本数)
# 方差,用于衡量一组数据的离散程度,即各组数据与它们的平均数的差的平方
DataFrame.var(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs)
axis=1表示行,axis=0表示列,默认为None(无)
skipna布尔型,表示计算结果是否排除NaN/Null值,默认值为True
level表示索引层级,默认值为None(无)
ddof整型,默认为1,自由度,计算中使用的除数是N-ddof,其中N表示元素的数量
numeric_only,仅数字,布尔型,默认无
**kwargs要传递给函数的附加关键字参数
返回值,返回Series对象或DataFrame对象
# 通过方差判断谁的物理成绩更稳定
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [[110, 113, 102, 105, 108], [118, 98, 119, 85, 118]]
index = ['小黑', '小白']
columns = ['物理1', '物理2', '物理3', '物理4', '物理5']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(df.var(axis=1))
物理1 物理2 物理3 物理4 物理5
小黑 110 113 102 105 108
小白 118 98 119 85 118
小黑 18.3
小白 237.3
dtype: float64
# 小黑的波动小,发挥稳定
【求标准差】又称均方差,是方差的平方根,用来表示数据的离散程度
DataFrame.std(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs)
axis=1表示行,axis=0表示列,默认为None(无)
skipna布尔型,表示计算结果是否排除NaN/Null值,默认值为True
level表示索引层级,默认值为None(无)
ddof整型,默认为1,自由度,计算中使用的除数是N-ddof,其中N表示元素的数量
numeric_only,仅数字,布尔型,默认无
**kwargs要传递给函数的附加关键字参数
返回值,返回Series对象或DataFrame对象
# 通过方差判断谁的物理成绩更稳定
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, columns=columns)
print(df)
print(df.std())
语文 数学 英语
0 110 120 110
1 130 130 130
2 130 120 130
语文 11.547005
数学 5.773503
英语 11.547005
dtype: float64
【求分位数】也称分位点,它以概率为依据将数据分割为几个等份
# 常用的有中位数(即二分位数)、四分位数、百分位数等
DataFrame.std(q=0.5,axis=0,numeric_only=True,interpolation='linear')
q浮点型或数组,默认为0.5(50%分位数),其值在0~1之间
axis=1表示行,axis=0表示列,默认为0
numeric_only,仅数字,布尔型,默认True
interpolation,内插值,可选参数,用于指定要使用的插值方法,当期望的分位数位于两个数据点i和j之间时
线性:i+(j-i)× 分数,其中分数是指数被i和j包围的小数部分
较低:i
较高:j
最近:i或j都以最近者为准
中点:(i+j)/2
返回值,返回Series对象或DataFrame对象
# 通过分位数确定被淘汰的35%的学生
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = [120, 89, 98, 78, 65, 102, 112, 56, 79, 45]
columns = ['数学']
df = pd.DataFrame(data=data, columns=columns)
x = df['数学'].quantile(0.35) # 计算35%的分位数
print(df[df['数学']<=x]) # 输出淘汰学生
数学
3 78
4 65
7 56
9 45
例子:【计算日期、时间和时间增量数据的分位数】
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame({
'A':[1, 2],
'B':[pd.Timestamp('2019'),
pd.Timestamp('2020')],
'C':[pd.Timedelta('1 days'),
pd.Timedelta('2 days')]
})
print(df.quantile(0.5, numeric_only=False))
A 1.5
B 2019-07-02 12:00:00
C 1 days 12:00:00
Name: 0.5, dtype: object
后面这个例子没看明白是做什么用的。后续再研究。
网友评论