Python数据分析 知识量:13 - 56 - 232
可以通过count()函数计算DataFrame数据对象中每列的非空数值的个数。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_nan.xlsx") print(df,'\n') print(df.count())
运行结果为:
Name Sex Chinese English Math 0 Noah male 90.0 50.0 66.0 1 Emma NaN 56.0 56.0 55.0 2 NaN NaN NaN NaN NaN 3 Olivia female 86.0 87.0 NaN 4 Liam male 55.0 NaN 69.0 5 Sophia female 90.0 66.0 96.0 6 Liam male 55.0 NaN 69.0 7 Isabella female NaN 85.0 55.0 Name 7 Sex 6 Chinese 6 English 5 Math 6 dtype: int64
此外,还可以查看每一行或每一列的非空数值个数:
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_nan.xlsx") print(df,'\n') print(df.count(axis=1),'\n') # 每一行的非空数值个数 print(df.Chinese.count()) # Chinese列的非空数值个数
运行结果为:
Name Sex Chinese English Math 0 Noah male 90.0 50.0 66.0 1 Emma NaN 56.0 56.0 55.0 2 NaN NaN NaN NaN NaN 3 Olivia female 86.0 87.0 NaN 4 Liam male 55.0 NaN 69.0 5 Sophia female 90.0 66.0 96.0 6 Liam male 55.0 NaN 69.0 7 Isabella female NaN 85.0 55.0 0 5 1 4 2 0 3 4 4 4 5 5 6 4 7 4 dtype: int64 6
可以通过sum()函数计算数据表每一列的求和结果。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx") print(df,'\n') print(df.sum())
运行结果为:
Name Sex Chinese English Math 0 Noah male 90 50 66 1 Emma female 56 56 55 2 Bob male 99 84 89 3 Olivia female 86 87 44 4 Jeff male 48 87 65 5 Liam male 55 88 69 6 Sophia female 90 66 96 7 Isabella female 66 85 55 Name NoahEmmaBobOliviaJeffLiamSophiaIsabella Sex malefemalemalefemalemalemalefemalefemale Chinese 590 English 603 Math 539 dtype: object
以上示例中,对于非数值型列(Name和Sex)也进行了简单的求和(拼接)。
除了对全部数据进行求和外,可以设置axis=1,来对每一行进行求和操作。还可以对某一行或某一列进行求和。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx") print(df,'\n') print(df.sum(axis=1),'\n') # 计算每一行的和 print(df.iloc[2,2:].sum(),'\n') # 计算第2行第2到4列的和 print(df.Chinese.sum()) # 计算Chinese列的和
运行结果为:
Name Sex Chinese English Math 0 Noah male 90 50 66 1 Emma female 56 56 55 2 Bob male 99 84 89 3 Olivia female 86 87 44 4 Jeff male 48 87 65 5 Liam male 55 88 69 6 Sophia female 90 66 96 7 Isabella female 66 85 55 0 206 1 167 2 272 3 217 4 200 5 212 6 252 7 206 dtype: int64 272 590
计算每一行的和时自动忽略非数值项。
可以利用mean()函数求平均值。当对整个DataFrame数据表使用mean()函数时,将返回每一列的平均值:
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx") print(df,'\n') print(df.mean())
运行结果为:
Name Sex Chinese English Math 0 Noah male 90 50 66 1 Emma female 56 56 55 2 Bob male 99 84 89 3 Olivia female 86 87 44 4 Jeff male 48 87 65 5 Liam male 55 88 69 6 Sophia female 90 66 96 7 Isabella female 66 85 55 Chinese 73.750 English 75.375 Math 67.375 dtype: float64
从以上示例可以看出,对整个数据表求平均值时,默认只计算数值型数据。
可以通过设置参数axis=1,来对每一行求平均值。也可以索引出某一行或某一列,单独求平均值。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx") print(df,'\n') print(df.mean(axis=1),'\n') # 计算每一行的平均值 print(df.iloc[2,2:].mean(),'\n') # 计算第2行第2到4列的平均值 print(df.Chinese.mean()) # 计算Chinese列的平均值
运行结果为:
Name Sex Chinese English Math 0 Noah male 90 50 66 1 Emma female 56 56 55 2 Bob male 99 84 89 3 Olivia female 86 87 44 4 Jeff male 48 87 65 5 Liam male 55 88 69 6 Sophia female 90 66 96 7 Isabella female 66 85 55 0 68.666667 1 55.666667 2 90.666667 3 72.333333 4 66.666667 5 70.666667 6 84.000000 7 68.666667 dtype: float64 90.66666666666667 73.75
使用max()函数求最大值,使用min()函数求最小值。对整个DataFrame数据表使用时,返回的是每一列的最大值和最小值,也可以对每一行、某一行、某一列求最大值和最小值。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx") print(df,'\n') print('****************************************') print(df.max(),'\n') # 计算每一列的最大值 print(df.max(axis=1),'\n') # 计算每一行的最大值 print(df.iloc[2,2:].max(),'\n') # 计算第2行第2到4列的最大值 print(df.Chinese.max(),'\n') # 计算Chinese列的最大值 print('****************************************') print(df.min(),'\n') # 计算每一列的最小值 print(df.min(axis=1),'\n') # 计算每一行的最小值 print(df.iloc[2,2:].min(),'\n') # 计算第2行第2到4列的最小值 print(df.Chinese.min()) # 计算Chinese列的最小值
运行结果为:
Name Sex Chinese English Math 0 Noah male 90 50 66 1 Emma female 56 56 55 2 Bob male 99 84 89 3 Olivia female 86 87 44 4 Jeff male 48 87 65 5 Liam male 55 88 69 6 Sophia female 90 66 96 7 Isabella female 66 85 55 **************************************** Name Sophia Sex male Chinese 99 English 88 Math 96 dtype: object 0 90 1 56 2 99 3 87 4 87 5 88 6 96 7 85 dtype: int64 99 99 **************************************** Name Bob Sex female Chinese 48 English 50 Math 44 dtype: object 0 50 1 55 2 84 3 44 4 48 5 55 6 66 7 55 dtype: int64 84 48
当一组数列从小到大排列,位于中间位置的数即是中位数。Python中,使用median()函数来求中位数。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx") print(df,'\n') print(df.median(),'\n') # 计算每一列的中位数 print(df.median(axis=1),'\n') # 计算每一行的中位数 print(df.iloc[2,2:].median(),'\n') # 计算第2行第2到4列的中位数 print(df.Chinese.median()) # 计算Chinese列的中位数
运行结果为:
Name Sex Chinese English Math 0 Noah male 90 50 66 1 Emma female 56 56 55 2 Bob male 99 84 89 3 Olivia female 86 87 44 4 Jeff male 48 87 65 5 Liam male 55 88 69 6 Sophia female 90 66 96 7 Isabella female 66 85 55 Chinese 76.0 English 84.5 Math 65.5 dtype: float64 0 66.0 1 56.0 2 89.0 3 86.0 4 65.0 5 69.0 6 90.0 7 66.0 dtype: float64 89.0 76.0
在排序后的一组数值中,分位数基于位置给出该组数值的指标。分位数可分为四分之一位数、四分之二位数、四分之三位数。其中,四分之二位数即是中位数。Python中,使用quantile()函数来求分位数,需要通过参数给出分位数值。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx",usecols=[2,3,4]) print(df,'\n') print(df.quantile(0.25),'\n') # 计算每一列的四分之一位数 print(df.quantile(0.25,axis=1),'\n') # 计算每一行的四分之一位数 print(df.iloc[1].quantile(0.75),'\n') # 计算第1行的四分之三位数 print(df.Chinese.quantile(0.75)) # 计算Chinese列的四分之三位数
运行结果为:
Chinese English Math 0 90 50 66 1 56 56 55 2 99 84 89 3 86 87 44 4 48 87 65 5 55 88 69 6 90 66 96 7 66 85 55 Chinese 55.75 English 63.50 Math 55.00 Name: 0.25, dtype: float64 0 58.0 1 55.5 2 86.5 3 65.0 4 56.5 5 62.0 6 78.0 7 60.5 Name: 0.25, dtype: float64 56.0 90.0
众数就是一组数值中出现次数最多的数。Python中,使用mode()函数来求众数。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx",usecols=[2,3,4]) print(df,'\n') print(df.mode(),'\n') # 计算每一列的众数 print(df.mode(axis=1),'\n') # 计算每一行的众数 print(df.iloc[1].mode(),'\n') # 计算第1行的众数 print(df.Chinese.mode()) # 计算Chinese列的众数
运行结果为:
Chinese English Math 0 90 50 66 1 56 56 55 2 99 84 89 3 86 87 44 4 48 87 65 5 55 88 69 6 90 66 96 7 66 85 55 Chinese English Math 0 90 87 55 0 1 2 0 50.0 66.0 90.0 1 56.0 NaN NaN 2 84.0 89.0 99.0 3 44.0 86.0 87.0 4 48.0 65.0 87.0 5 55.0 69.0 88.0 6 66.0 90.0 96.0 7 55.0 66.0 85.0 0 56 dtype: int64 0 90 dtype: int64
Python中,使用var()函数来求方差。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx",usecols=[2,3,4]) print(df,'\n') print(df.var(),'\n') # 计算每一列的方差 print(df.var(axis=1),'\n') # 计算每一行的方差 print(df.iloc[1].var(),'\n') # 计算第1行的方差 print(df.Chinese.var()) # 计算Chinese列的方差
运行结果为:
Chinese English Math 0 90 50 66 1 56 56 55 2 99 84 89 3 86 87 44 4 48 87 65 5 55 88 69 6 90 66 96 7 66 85 55 Chinese 386.500000 English 243.410714 Math 307.125000 dtype: float64 0 405.333333 1 0.333333 2 58.333333 3 602.333333 4 382.333333 5 274.333333 6 252.000000 7 230.333333 dtype: float64 0.33333333333333337 386.5
Python中,使用std()函数来求标准差。
import pandas as pd df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx",usecols=[2,3,4]) print(df,'\n') print(df.std(),'\n') # 计算每一列的标准差 print(df.std(axis=1),'\n') # 计算每一行的标准差 print(df.iloc[1].std(),'\n') # 计算第1行的标准差 print(df.Chinese.std()) # 计算Chinese列的标准差
运行结果为:
Chinese English Math 0 90 50 66 1 56 56 55 2 99 84 89 3 86 87 44 4 48 87 65 5 55 88 69 6 90 66 96 7 66 85 55 Chinese 19.659603 English 15.601625 Math 17.524982 dtype: float64 0 20.132892 1 0.577350 2 7.637626 3 24.542480 4 19.553346 5 16.563011 6 15.874508 7 15.176737 dtype: float64 0.5773502691896258 19.6596032513375
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6