扫码一下
查看教程更方便
pandas 使用大量的方法计算 基于dataframe 数据的描述性统计,和其他一些相关的操作。其中大多数是sum()、mean() 之类的聚合函数。但其中一些函数(例如sumsum() )会生成相同大小的对象。一般来说,这些方法采用轴参数,就像ndarray.{sum, std, ...}
一样,但轴可以通过名称或整数指定。
dataframe - “行索引”(轴= 0,默认),“列”(轴= 1)
接下来让我们创建一个 dataframe 数据,然后用这个数据演示一下这些函数的应用
import pandas as pd
import numpy as np
#创建一个 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])
}
df = pd.dataframe(d)
print(df)
运行结果如下
age name rating
0 25 tom 4.23
1 26 james 3.24
2 25 ricky 3.98
3 23 vin 2.56
4 30 steve 3.20
5 29 smith 4.60
6 23 jack 3.80
7 34 lee 3.78
8 40 david 2.98
9 30 gasper 4.80
10 51 betina 4.10
11 46 andres 3.65
返回请求轴的值的总和。默认情况下,轴是索引(轴=0)。
import pandas as pd
import numpy as np
#创建一个 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])
}
df = pd.dataframe(d)
print(df.sum())
运行结果如下
name tomjamesrickyvinstevesmithjackleedavidgasperbe...
age 382
rating 44.92
dtype: object
每个单独的列都是单独添加的(附加字符串)。
接下来我们指定 axis = 1
print(df.sum(1))
结果如下
0 29.23
1 29.24
2 28.98
3 25.56
4 33.20
5 33.60
6 26.80
7 37.78
8 42.98
9 34.80
10 55.10
11 49.65
dtype: float64
返回平均值
import pandas as pd
import numpy as np
#创建一个 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])
}
df = pd.dataframe(d)
print(df.mean())
运行结果如下
age 31.833333
rating 3.743333
dtype: float64
返回数值列的 bressel 标准差。
import pandas as pd
import numpy as np
#创建一个 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])
}
df = pd.dataframe(d)
print(df.std())
运行结果如下
age 9.232682
rating 0.661628
dtype: float64
上面一些示例,我们大概了解了一些统计性的方法,下面我们列出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 是异构数据结构。通用操作不适用于所有函数。
describe() 函数计算关于所述数据帧列的统计信息的摘要。
import pandas as pd
import numpy as np
#创建一个 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])
}
df = pd.dataframe(d)
print(df.describe())
运行结果如下
age rating
count 12.000000 12.000000
mean 31.833333 3.743333
std 9.232682 0.661628
min 23.000000 2.560000
25% 25.000000 3.230000
50% 29.500000 3.790000
75% 35.500000 4.132500
max 51.000000 4.800000
此函数给出均值、标准差和iqr值。并且,函数排除了字符列并给出了关于数字列的摘要。include
是用于指定有关需要考虑哪些列进行汇总的必要信息的参数。
获取值列表;默认情况下,“number”。
现在,在程序中使用以下语句并检查输出
import pandas as pd
import numpy as np
#创建一个 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])
}
df = pd.dataframe(d)
print(df.describe(include=['object']))
运行结果如下
name
count 12
unique 12
top ricky
freq 1
再看下面这个示例
import pandas as pd
import numpy as np
#创建一个 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])
}
df = pd.dataframe(d)
print(df.describe(include=['number']))
运行结果如下
age rating
count 12.000000 12.000000
mean 31.833333 3.743333
std 9.232682 0.661628
min 23.000000 2.560000
25% 25.000000 3.230000
50% 29.500000 3.790000
75% 35.500000 4.132500
max 51.000000 4.800000