Pandas中文官方文档之基础用法2.docx

上传人:b****5 文档编号:7597844 上传时间:2023-01-25 格式:DOCX 页数:10 大小:19.54KB
下载 相关 举报
Pandas中文官方文档之基础用法2.docx_第1页
第1页 / 共10页
Pandas中文官方文档之基础用法2.docx_第2页
第2页 / 共10页
Pandas中文官方文档之基础用法2.docx_第3页
第3页 / 共10页
Pandas中文官方文档之基础用法2.docx_第4页
第4页 / 共10页
Pandas中文官方文档之基础用法2.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Pandas中文官方文档之基础用法2.docx

《Pandas中文官方文档之基础用法2.docx》由会员分享,可在线阅读,更多相关《Pandas中文官方文档之基础用法2.docx(10页珍藏版)》请在冰豆网上搜索。

Pandas中文官方文档之基础用法2.docx

Pandas中文官方文档之基础用法2

描述性统计

Series 与 DataFrame 支持大量计算描述性统计的方法与操作。

这些方法大部分都是 sum()、mean()、quantile() 等聚合函数,其输出结果比原始数据集小;此外,还有输出结果与原始数据集同样大小的 cumsum() 、 cumprod() 等函数。

这些方法都基本上都接受 axis 参数,如, ndarray.{sum,std,…},但这里的 axis 可以用名称或整数指定:

∙Series:

无需 axis 参数

∙DataFrame:

▪"index",即 axis=0,默认值

▪"columns",即 axis=1

示例如下:

In[77]:

df

Out[77]:

onetwothree

a1.3949811.772517NaN

b0.3430541.912123-0.050390

c0.6952461.4783691.227435

dNaN0.279344-0.613172

In[78]:

df.mean(0)

Out[78]:

one0.811094

two1.360588

three0.187958

dtype:

float64

In[79]:

df.mean

(1)

Out[79]:

a1.583749

b0.734929

c1.133683

d-0.166914

dtype:

float64

这些方法都支持 skipna,这个关键字指定是否要把缺失数据排除在外,默认值为 True。

In[80]:

df.sum(0,skipna=False)

Out[80]:

oneNaN

two5.442353

threeNaN

dtype:

float64

In[81]:

df.sum(axis=1,skipna=True)

Out[81]:

a3.167498

b2.204786

c3.401050

d-0.333828

dtype:

float64

结合广播机制或算数操作,可以描述不同统计过程,比如标准化,即渲染数据零均值与标准差1,这种操作非常简单:

In[82]:

ts_stand=(df-df.mean())/df.std()

In[83]:

ts_stand.std()

Out[83]:

one1.0

two1.0

three1.0

dtype:

float64

In[84]:

xs_stand=df.sub(df.mean

(1),axis=0).div(df.std

(1),axis=0)

In[85]:

xs_stand.std

(1)

Out[85]:

a1.0

b1.0

c1.0

d1.0

dtype:

float64

注:

 cumsum() 与 cumprod() 等方法保留 NaN 值的位置。

这与 expanding() 和 rolling() 略显不同,详情请参阅本文。

In[86]:

df.cumsum()

Out[86]:

onetwothree

a1.3949811.772517NaN

b1.7380353.684640-0.050390

c2.4332815.1630081.177045

dNaN5.4423530.563873

下面是常用函数汇总表。

每个函数都支持 level 参数,仅在数据对象为结构化Index 时使用。

函数

描述

count

统计非空值数量

sum

汇总值

mean

平均值

mad

平均绝对偏差

median

算数中位数

min

最小值

max

最大值

mode

众数

abs

绝对值

prod

乘积

std

贝塞尔校正的样本标准偏差

var

无偏方差

sem

平均值的标准误差

skew

样本偏度(第三阶)

kurt

样本峰度(第四阶)

quantile

样本分位数(不同%的值)

cumsum

累加

cumprod

累乘

cummax

累积最大值

cummin

累积最小值

注意:

Numpy的 mean、std、sum 等方法默认不统计Series里的空值。

In[87]:

np.mean(df['one'])

Out[87]:

0.8110935116651192

In[88]:

np.mean(df['one'].to_numpy())

Out[88]:

nan

Series.nunique() 返回Series里所有非空值的唯一值。

In[89]:

series=pd.Series(np.random.randn(500))

In[90]:

series[20:

500]=np.nan

In[91]:

series[10:

20]=5

In[92]:

series.nunique()

Out[92]:

11

数据总结:

describe

describe() 函数计算Series与DataFrame数据列的各种数据统计量,注意,这里排除了空值。

In[93]:

series=pd.Series(np.random.randn(1000))

In[94]:

series[:

:

2]=np.nan

In[95]:

series.describe()

Out[95]:

count500.000000

mean-0.021292

std1.015906

min-2.683763

25%-0.699070

50%-0.069718

75%0.714483

max3.160915

dtype:

float64

In[96]:

frame=pd.DataFrame(np.random.randn(1000,5),

....:

columns=['a','b','c','d','e'])

....:

In[97]:

frame.iloc[:

:

2]=np.nan

In[98]:

frame.describe()

Out[98]:

abcde

count500.000000500.000000500.000000500.000000500.000000

mean0.0333870.030045-0.043719-0.0516860.005979

std1.0171520.9787431.0252701.0159881.006695

min-3.000951-2.637901-3.303099-3.159200-3.188821

25%-0.647623-0.576449-0.712369-0.691338-0.691115

50%0.047578-0.021499-0.023888-0.032652-0.025363

75%0.7299070.7758800.6188960.6700470.649748

max2.7401392.7523323.0042292.7287023.240991

此外,还可以指定输出结果包含的分位数:

In[99]:

series.describe(percentiles=[.05,.25,.75,.95])

Out[99]:

count500.000000

mean-0.021292

std1.015906

min-2.683763

5%-1.645423

25%-0.699070

50%-0.069718

75%0.714483

95%1.711409

max3.160915

dtype:

float64

一般情况下,默认值包含中位数。

对于非数值型Series对象, describe() 返回值的总数、唯一值数量、出现次数最多的值及出现的次数。

In[100]:

s=pd.Series(['a','a','b','b','a','a',np.nan,'c','d','a'])

In[101]:

s.describe()

Out[101]:

count9

unique4

topa

freq5

dtype:

object

注意:

对于混合型的DataFrame对象, describe() 只返回数值列的汇总统计量,如果没有数值列,则只显示类别型的列。

In[102]:

frame=pd.DataFrame({'a':

['Yes','Yes','No','No'],'b':

range(4)})

In[103]:

frame.describe()

Out[103]:

b

count4.000000

mean1.500000

std1.290994

min0.000000

25%0.750000

50%1.500000

75%2.250000

max3.000000

include/exclude 参数的值为列表,用该参数可以控制包含或排除的数据类型。

这里还有一个特殊值,all:

In[104]:

frame.describe(include=['object'])

Out[104]:

a

count4

unique2

topYes

freq2

In[105]:

frame.describe(include=['number'])

Out[105]:

b

count4.000000

mean1.500000

std1.290994

min0.000000

25%0.750000

50%1.500000

75%2.250000

max3.000000

In[106]:

frame.describe(include='all')

Out[106]:

ab

count44.000000

unique2NaN

topYesNaN

freq2NaN

meanNaN1.500000

stdNaN1.290994

minNaN0.000000

25%NaN0.750000

50%NaN1.500000

75%NaN2.250000

maxNaN3.000000

本功能依托于 select_dtypes,要了解该参数接受哪些输入内容请参阅本文。

最大值与最小值对应的索引

Series与DataFrame的 idxmax() 与 idxmin() 函数计算最大值与最小值对应的索引。

In[107]:

s1=pd.Series(np.random.randn(5))

In[108]:

s1

Out[108]:

01.118076

1-0.352051

2-1.242883

3-1.277155

4-0.641184

dtype:

float64

In[109]:

s1.idxmin(),s1.idxmax()

Out[109]:

(3,0)

In[110]:

df1=pd.DataFrame(np.random.randn(5,3),columns=['A','B','C'])

In[111]:

df1

Out[111]:

ABC

0-0.327863-0.946180-0.137570

1-0.186235-0.257213-0.486567

2-0.507027-0.871259-0.111110

32.000339-2.4305050.089759

4-0.321434-0.0336950.096271

In[112]:

df1.idxmin(axis=0)

Out[112]:

A2

B3

C1

dtype:

int64

In[113]:

df1.idxmax(axis=1)

Out[113]:

0C

1A

2C

3A

4C

dtype:

object

多行或多列中存在多个最大值或最小值时,idxmax() 与 idxmin() 只返回匹配到的第一个值的 Index:

In[114]:

df3=pd.DataFrame([2,1,1,3,np.nan],columns=['A'],index=list('edcba'))

In[115]:

df3

Out[115]:

A

e2.0

d1.0

c1.0

b3.0

aNaN

In[116]:

df3['A'].idxmin()

Out[116]:

'd'

:

:

:

tip注意

idxmin 与 idxmax 对应Numpy里的 argmin 与 argmax。

:

:

:

值计数(直方图)与众数

Series的 value_counts() 方法及顶级函数计算一维数组中数据值的直方图,还可以用作常规数组的函数:

In[117]:

data=np.random.randint(0,7,size=50)

In[118]:

data

Out[118]:

array([6,6,2,3,5,3,2,5,4,5,4,3,4,5,0,2,0,4,2,0,3,2,

2,5,6,5,3,4,6,4,3,5,6,4,3,6,2,6,6,2,3,4,2,1,

6,2,6,1,5,4])

In[119]:

s=pd.Series(data)

In[120]:

s.value_counts()

Out[120]:

610

210

49

58

38

03

12

dtype:

int64

In[121]:

pd.value_counts(data)

Out[121]:

610

210

49

58

38

03

12

dtype:

int64

与上述操作类似,还可以统计Series或DataFrame的众数,即出现频率最高的值:

In[122]:

s5=pd.Series([1,1,3,3,3,5,5,7,7,7])

In[123]:

s5.mode()

Out[123]:

03

17

dtype:

int64

In[124]:

df5=pd.DataFrame({"A":

np.random.randint(0,7,size=50),

.....:

"B":

np.random.randint(-10,15,size=50)})

.....:

In[125]:

df5.mode()

Out[125]:

AB

01.0-9

1NaN10

2NaN13

离散化与分位数

cut()函数(以值为依据实现分箱)及 qcut()函数(以样本分位数为依据实现分箱)用于连续值的离散化:

In[126]:

arr=np.random.randn(20)

In[127]:

factor=pd.cut(arr,4)

In[128]:

factor

Out[128]:

[(-0.251,0.464],(-0.968,-0.251],(0.464,1.179],(-0.251,0.464],(-0.968,-0.251],...,(-0.251,0.464],(-0.968,-0.251],(-0.968,-0.251],(-0.968,-0.251],(-0.968,-0.251]]

Length:

20

Categories(4,interval[float64]):

[(-0.968,-0.251]<(-0.251,0.464]<(0.464,1.179]<

(1.179,1.893]]

In[129]:

factor=pd.cut(arr,[-5,-1,0,1,5])

In[130]:

factor

Out[130]:

[(0,1],(-1,0],(0,1],(0,1],(-1,0],...,(-1,0],(-1,0],(-1,0],(-1,0],(-1,0]]

Length:

20

Categories(4,interval[int64]):

[(-5,-1]<(-1,0]<(0,1]<(1,5]]

qcut() 计算样本分位数。

比如,下列代码按等距分位数分割正态分布的数据:

In[131]:

arr=np.random.randn(30)

In[132]:

factor=pd.qcut(arr,[0,.25,.5,.75,1])

In[133]:

factor

Out[133]:

[(0.569,1.184],(-2.278,-0.301],(-2.278,-0.301],(0.569,1.184],(0.569,1.184],...,(-0.301,0.569],(1.184,2.346],(1.184,2.346],(-0.301,0.569],(-2.278,-0.301]]

Length:

30

Categories(4,interval[float64]):

[(-2.278,-0.301]<(-0.301,0.569]<(0.569,1.184]<

(1.184,2.346]]

In[134]:

pd.value_counts(factor)

Out[134]:

(1.184,2.346]8

(-2.278,-0.301]8

(0.569,1.184]7

(-0.301,0.569]7

dtype:

int64

定义分箱时,还可以传递无穷值:

In[135]:

arr=np.random.randn(20)

In[136]:

factor=pd.cut(arr,[-np.inf,0,np.inf])

In[137]:

factor

Out[137]:

[(-inf,0.0],(0.0,inf],(0.0,inf],(-inf,0.0],(-inf,0.0],...,(-inf,0.0],(-inf,0.0],(-inf,0.0],(0.0,inf],(0.0,inf]]

Length:

20

Categories(2,interval[float64]):

[(-inf,0.0]<(0.0,inf]]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1