数据计算
pandas中具有大量的数据计算函数,比如求和、求平均值、求最大值、最小值、中位数、众数、方差、标准差等。
求和(sum)函数
DataFrame.sum(axis = None,skipna = None,level = None,numeric_only = None,min_count = 0,**kwargs)
参数说明:
- axis:axis = 1表示行,axis = 0表示列,默认为None(无)
- skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
- level:表示索引层级,默认为None
- numeric_only:仅数字,布尔型,默认值为None
- min_count:表示执行操作所需的数目,整型,默认为0
- **kwargs:要传递给函数的附加关键字参数。
- 返回值:返回Series对象或DataFrame对象。行或列求和数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[110,105,99],[105,88,115],[109,120,130]]
index = [1,2,3]
columns =['语文','数学','英语']
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
求均值(mean函数)
mean(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
参数说明:
- axis:axis = 1表示行,axis = 0表示列,默认为None(无)
- skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
- level:表示索引层级,默认为None
- numeric_only:仅数字,布尔型,默认值为None
- min_count:表示执行操作所需的数目,整型,默认为0
- **kwargs:要传递给函数的附加关键字参数。
- 返回值:返回Series对象或DataFrame对象。行或列平均值数据
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.mean()
#增加一行数据(语文、数学和英语的平均值,忽略索引)
df = df.append(new,ignore_index=True)
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
最大值(max函数)
max(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
参数说明:
- axis:axis = 1表示行,axis = 0表示列,默认为None(无)
- skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
- level:表示索引层级,默认为None
- numeric_only:仅数字,布尔型,默认值为None
- min_count:表示执行操作所需的数目,整型,默认为0
- **kwargs:要传递给函数的附加关键字参数。
- 返回值:返回Series对象或DataFrame对象。行或列最大值数据
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)
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
最小值(min函数)
min(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
参数说明:
-
axis:axis = 1表示行,axis = 0表示列,默认为None(无)
-
skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
-
level:表示索引层级,默认为None
-
numeric_only:仅数字,布尔型,默认值为None
-
min_count:表示执行操作所需的数目,整型,默认为0
-
**kwargs:要传递给函数的附加关键字参数。
-
返回值:返回Series对象或DataFrame对象。行或列最小值数据
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) 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
中位数(median函数)
中位数又叫作中值,按顺序排列的一组数据中位于中间位置的数,其不受异常值的影响。
median(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
参数说明:
- axis:axis = 1表示行,axis = 0表示列,默认为None(无)
- skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
- level:表示索引层级,默认为None
- numeric_only:仅数字,布尔型,默认值为None
- min_count:表示执行操作所需的数目,整型,默认为0
- **kwargs:要传递给函数的附加关键字参数。
- 返回值:返回Series对象或DataFrame对象。行或列中位数数据
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.median()
#增加一行数据(语文、数学和英语的中位数,忽略索引)
df = df.append(new,ignore_index=True)
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 109.5 110.0 115.0
求众数(mode函数)
众数就是一组数据中出现最多的数,代表了数据的一般水平。
mode(axis=0, numeric_only=False, dropna=True)
参数说明:
- axis:axis = 1表示行,axis = 0表示列,默认为None(无)
- numeric_only:仅数字,布尔型,默认值为None
- drop_na:是否删除缺失值,布尔型,默认为True
- 返回Series对象或DataFrame对象。
import pandas as pd
data = [[110,120,110],[130,130,130],[130,120,130]]
columns = ['语文','数学','英语']
df = pd.DataFrame(data = data ,columns=columns)
print(df.mode())#三科成绩的众数
print(df.mode(axis = 1))#每一行的众数
print(df['数学'].mode())#'数学'成绩的众数
语文 数学 英语
0 130 120 130
0
0 110
1 130
2 130
0 120
dtype: int64
方差(var函数)
方差是用来反映数据的离散程度的,是各组数据与他们平均数的差的平方,方差越小越稳定。
var(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
参数说明:
- axis:axis = 1表示行,axis = 0表示列,默认为None(无)
- skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
- level:表示索引层级,默认为None
- ddof:整型,默认值为1.自由度,计算中使用的除数是N-ddof,其中N表示元素的数量。
- numeric_only:仅数字,布尔型,默认值为None
- **kwargs:要传递给函数的附加关键字参数。
- 返回值:返回Series对象或DataFrame对象。
import pandas as pd
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.var(axis = 1))
小黑 18.3
小白 237.3
dtype: float64
标准差(std函数)
标准差是方差的平方根,用来表示数据的离散程度。
std(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
参数与var一样。
import pandas as pd
data = [[110,120,110],[130,130,130],[130,120,130]]
columns = ['语文','数学','英语']
df = pd.DataFrame(data = data ,columns=columns)
print(df.std())
语文 11.547005
数学 5.773503
英语 11.547005
dtype: float64
分位数(quantile函数)
分位数是以概率依据将数据分割为几个等分,常用的有中位数(即二分位数)、四分位数、百分位数等。
quantile(q=0.5, axis=0, numeric_only=True, interpolation='linear')
参数说明:
-
q:浮点型或数组,默认为0.5(50%分位数),其值为0~1
-
axis:axis = 1表示行,axis = 0表示列,默认为None(无)
-
numeric_only:仅数字,布尔型,默认值为True
-
interpolation:内插值,可选参数,用于指定要使用的插值方法,当期望的分位数为数据点i~j时。
- 线性:i+(j-i)*分数,其中分数是指数被i和j包围的小数部分。
- 较低:i
- 较高:j
- 最近:i或j二者以最近者为准
- 中点:(i+j)/2
-
返回值:返回Series对象或DataFrame对象。
import pandas as pd
#创建DataFrame数据(数学成绩)
data = [120,89,98,78,65,102,112,56,79,45]
columns = ['数学']
df = pd.DataFrame(data = data,columns=columns)
#计算35%的分位数
x = df['数学'].quantile(0.35)
#输出淘汰
print(df[df['数学']<=x])
import pandas as pd
#创建DataFrame数据(数学成绩)
data = [120,89,98,78,65,102,112,56,79,45]
columns = ['数学']
df = pd.DataFrame(data = data,columns=columns)
#计算35%的分位数
x = df['数学'].quantile(0.35)
#输出淘汰
print(df[df['数学']<=x])
数学
3 78
4 65
7 56
9 45
import pandas as pd
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