Pandas 描述性统计
Pandas 描述性统计操作实例
DataFrame用在大量的计算描述性信息统计和其他相关操作。其中大多数是聚合,例如sum(),mean(),但其中一些聚合(例如sumsum())会产生相同大小的对象。一般而言,这些方法采用轴参数,就像ndarray。{sum,std,...}一样,但是可以通过名称或整数指定轴 DataFrame − 索引 (axis=0, default), 列 (axis=1)
我们来创建一个DataFrame并在本章中使用此对象进行所有操作。
实例
importpandasaspdimportnumpyasnp#创建一个series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df)
运行结果:
AgeNameRating025Tom4.23126James3.24225Ricky3.98323Vin2.56430Steve3.20529Smith4.60623Jack3.80734Lee3.78840David2.98930Gasper4.801051Betina4.101146Andres3.65
sum()
返回所请求轴的值之和。默认情况下,轴为索引(轴=0)
importpandasaspdimportnumpyasnp#创建一个Series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df.sum())
运行结果:
Age382NameTomJamesRickyVinSteveSmithJackLeeDavidGasperBe...Rating44.92dtype:object
每个单独的列都添加了字符串
axis=1
此语法将输出以下内容。
importpandasaspdimportnumpyasnp#创建一个series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df.sum(1))
运行结果:
029.23129.24228.98325.56433.20533.60626.80737.78842.98934.801055.101149.65dtype:float64
mean()
返回平均值
importpandasaspdimportnumpyasnp#创建一个series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df.mean())
运行结果:
Age31.833333Rating3.743333dtype:float64
std()
返回数值列的Bressel标准偏差。
importpandasaspdimportnumpyasnp#创建一个series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df.std())
运行结果:
Age9.232682Rating0.661628dtype:float64
Functions & Description
现在我们来了解Python Pandas中描述性统计信息下的功能。下表列出了重要功能:
编号 | 方法 | 描述 |
1 | count() | 非空数 |
2 | sum() | 总数 |
3 | mean() | 平均数 |
4 | median() | 中位数 |
5 | mode() | 模式 |
6 | std() | 标准差 |
7 | min() | 最低值 |
8 | max() | 最大值 |
9 | abs() | 绝对值 |
10 | prod() | 乘积 |
11 | cumsum() | 累加 |
12 | cumprod() | 累乘 |
注意: − 由于DataFrame是异构数据结构。泛型运算并不适用于所有功能。
- 诸如sum(),cumsum()之类的函数可用于数字和字符(或)字符串数据元素,而不会出现任何错误。虽然字符集合从不普遍使用,但不会抛出任何异常。
- 当DataFrame包含字符或字符串数据时,诸如abs(),cumprod()之类的函数将引发异常,因为此类操作无法执行。
汇总数据
importpandasaspdimportnumpyasnp#创建一个series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df.describe())
运行结果:
AgeRatingcount12.00000012.000000mean31.8333333.743333std9.2326820.661628min23.0000002.56000025%25.0000003.23000050%29.5000003.79000075%35.5000004.132500max51.0000004.800000
此函数提供平均值,std和IQR值。并且,函数不包括字符列和有关数字列的给定摘要。“ include”是用于传递有关汇总时需要考虑哪些列的必要信息的参数。取值列表;默认情况下为“数字”。
object − 汇总字符串列number − 汇总数字列all − 总结所有列在一起(不应该把它作为一个列表值)下面我们在程序中使用以下语句并执行并输出:
importpandasaspdimportnumpyasnp#创建一个series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df.describe(include=['object']))
运行结果:
Namecount12unique12topRickyfreq1
下面我们在程序中使用以下语句并执行并输出:
importpandasaspdimportnumpyasnp#创建一个series字典d={'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack','Lee','David','Gasper','Betina','Andres']),'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}#创建一个DataFramedf=pd.DataFrame(d)print(df.describe(include='all'))
运行结果:
AgeNameRatingcount12.0000001212.000000uniqueNaN12NaNtopNaNRickyNaNfreqNaN1NaNmean31.833333NaN3.743333std9.232682NaN0.661628min23.000000NaN2.56000025%25.000000NaN3.23000050%29.500000NaN3.79000075%35.500000NaN4.132500max51.000000NaN4.800000
编辑于2024-05-20 15:58