pandas.Da他Frame.describe 的参数有 percentiles , include ,exclude
percentiles 是自定义百分位的 ,数值是从0-1 之间,默认的是[0.25,0.50, 0.75] 可以自定义,但是结果会默认自带0.5 ,例如
import pandas as pd
a = pd.DatafFrame({"a":[1,2,3,4,5,6,7],"b":["b1","b2","b3","b4","b5","b6","b7"]})
a.describe(percentiles=[0.3,0.6,0.8])
# 输出
# a
count 7.000000
mean 4.000000
std 2.160247
min 1.000000
30% 2.800000
50% 4.000000
60% 4.600000
80% 5.800000
max 7.000000
a.describe()
# 输出
a
count 7.000000
mean 4.000000
std 2.160247
min 1.000000
25% 2.500000
50% 4.000000
75% 5.500000
max 7.000000
例子:
描述数字系列。
s = pd.Series([1, 2, 3])
s.describe()
count 3.0
mean 2.0
std 1.0
min 1.0
25% 1.5
50% 2.0
75% 2.5
max 3.0
描述一个分类系列。
s = pd.Series([‘a’, ‘a’, ‘b’, ‘c’])
s.describe()
count 4
unique 3
top a
freq 2
dtype: object
描述时间戳系列。
s = pd.Series([
… np.datetime64(“2000-01-01”),
… np.datetime64(“2010-01-01”),
… np.datetime64(“2010-01-01”)
… ])
s.describe()
count 3
unique 2
top 2010-01-0100:00:00
freq 2
first 2000-01-01 00:00:00
last 2010-01-01 00:00:00
dtype: object
描述DataFrame。默认情况下只返回数字字段。
df = pd.DataFrame([[1, ‘a’], [2, ‘b’], [3, ‘c’]],
… columns=[‘numeric’, ‘object’])
df.describe()
numeric
count 3.0
mean 2.0
std 1.0
min 1.0
25% 1.5
50% 2.0
75% 2.5
max 3.0
描述DataFrame的所有列,而不管数据类型如何。
df.describe(include=‘all’)
numericobject
count 3.0 3
unique NaN 3
top NaN b
freq NaN 1
mean 2.0 NaN
std 1.0 NaN
min 1.0 NaN
25% 1.5 NaN
50% 2.0 NaN
75% 2.5 NaN
max 3.0 NaN
通过访问DataFrame作为属性来描述列。
df.numeric.describe()
count 3.0
mean 2.0
std 1.0
min 1.0
25% 1.5
50% 2.0
75% 2.5
max 3.0
Name: numeric, dtype: float64
在DataFrame描述中仅包含数字列。
df.describe(include=[np.number])
numeric
count 3.0
mean 2.0
std 1.0
min 1.0
25% 1.5
50% 2.0
75% 2.5
max 3.0
在DataFrame描述中只包含字符串列。
df.describe(include=[np.object])
object
count 3
unique 3
top b
freq 1
从DataFrame描述中排除数字列。
df.describe(exclude=[np.number])
object
count 3
unique 3
top b
freq 1
从DataFrame描述中排除对象列。
df.describe(exclude=[np.object])
numeric
count 3.0
mean 2.0
std 1.0
min 1.0
25% 1.5
50% 2.0
75% 2.5
max 3.0
特别指出 df.descirbe(include=[‘O’]) 是指的离散型列的描述统计,也就是不含有数值的那些列,举例子
import pnadas as pd
df = pd.DataFrame({"a":[1,2,3,4,5,6,7],"b":["b1","b2","b3","b4","b5","b6","b7"]})
df.describe(include=['O'])
# 输出
b
count 7
unique 7
top b1
freq 1
另外,一些说明:
1.count:非空值总数
2.mean:非空值的平均值
3.std:方差
4.min:最小值
-
25%:25%分位数
-
50%:50%分位数(中位数)
-
75%: 75%分位数
8.max: 最大值
9.dtype: 数据类型
10.unique: 唯一值数
11.top: 频数最高者
12.freq: 最高频数
#针对 df.describe(include=[np.object])如果多个对象值具有最高的计数,则计数和顶部结果将从计数最高的那些中任意选择
#还可以这样写 df.describe(include=‘O’)
#关于百分位的理解:
定义:
百分位数是某一百分位所对应数据的值,是统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,可表示为:一组n个观测值按数值大小排列,如处于p%位置的值称第p百分位数。
百分位数是对应于百分位的实际数值,中位数是第50百分位数。
举例:
你是班上 20个学生里身高第四的学生
80% 的学生比你矮:
你身高是第 80个百分位数(百分等级是 80%)
如果你的身高是 1.85m,“1.85m” 是班上身高的 80% 百分位数。
#我个人理解:一组数据(n个),从低到高排名所对应的值。只不过最低按照第一名算,得分最高按照第n名算,将m 名对应的分数,只不过这个m 再换算成百分数,即 m/n 百分位 所对应的数值