quantile函数_数据分析的python函数get

之前我们也写过一些python数据分析相关方面的文章例如《python系列-100条处理dataframe的语句》、《python series处理60句 + 字符串处理40句》、《python函数对应的同样功能的sas函数》。这些文章都从不同角度介绍了python实现数据分析。今天我们从数据分析实际工作的角度跟大家交流下。

数据处理阶段

一般地,我们知道在进行数据分析之前,我们需要对数据先做一定的处理,才能得出我们的目标。例如我们需要分析广东省深圳市的GDP,先需要对数据进行筛选,进一步地,我们还对不需要的数据进行删除。这两种方式涉及到对数据的删除过滤和数据的整体性改造,这部分内容可以定义为数据的修改。而再进一步地,我们的GDP数据如果包含了不一致的单位,还需要对GDP的数据进行转换,这部分内容可以定义为数据的转换。

数据的修改

数据的修改用到的过滤函数主要有loc函数、drop、dropnan、rename函数等。

loc函数主要用来选择数据集的子集,主要就两个方向,提取行数据、提取列数据。

操作数据为:
loc_dataOut[288]:     A   B   C   Da   0   1   2   3b   4   5   6   7c   8   9  10  11d  12  13  14  15e  16  17  18  19f  20  21  22  23g  24  25  26  27h  28  29  30  31
提取行数据
通过索引来获取行
loc_data.loc['a']Out[289]: A    0B    1C    2D    3Name: a, dtype: int64
通过行号来获取行
loc_data.iloc[0]Out[291]: A    0B    1C    2D    3Name: a, dtype: int64
获取指定行c、d行和A、B列
loc_data.loc[['c','d'],['A','B']]Out[293]:     A   Bc   8   9d  12  13
通过条件获取指定行
==用法
loc_data[loc_data['B']==1] Out[307]:    A  B  C  Da  0  1  2  3
isin用法
loc_data[loc_data['A'].isin([4,8])] Out[308]:    A  B   C   Db  4  5   6   7c  8  9  10  11
==结合&用法
loc_data[(loc_data['A']==12)&(loc_data['B']==13)] Out[309]:     A   B   C   Dd  12  13  14  15
isin结合|用法
loc_data[(loc_data['A'].isin([24]))|(loc_data['B'].isin([25,29]))] Out[312]:     A   B   C   Dg  24  25  26  27h  28  29  30  31

删除数据

删除数据数据常用的函数有drop、dropna等, drop函数主要也是两个方向,删除行数据、删除列数据。

删除列数据

loc_data_new = loc_data.drop('D',1)loc_data_newOut[324]:     A   B   Ca   0   1   2b   4   5   6c   8   9  10d  12  13  14e  16  17  18f  20  21  22g  24  25  26h  28  29  30
删除行数据
loc_data_new = loc_data.drop('a',0)loc_data_newOut[327]:     A   B   C   Db   4   5   6   7c   8   9  10  11d  12  13  14  15e  16  17  18  19f  20  21  22  23g  24  25  26  27h  28  29  30  31

dropna函数用于删除数据中的空值,这里删除D列中的空行

loc_data.dropna(subset=['D'],how='any')Out[406]:     A   B   C     D NEWBa   0   1   2   3.0    Bb   4   5   6   7.0    Bc   8   9  10  11.0    Be  16  17  18  19.0    Bf  20  21  22  23.0    Bg  24  25  26  27.0    Bh  28  29  30  31.0    B

数据的转换

数据的转换用到的过滤函数主要有map函数、apply函数、applymap等,能够实现大部分的转换需求。

map函数使用方法为,首先选取我们需要转换的列,在map函数里面针对所选取的列设定我们的转换关系,例如把1转成A,5转成B,29转成D
通过字典设转换关系
loc_data['B'].map({1:'A',5:'B',29:'D'})Out[337]: a      Ab      Bc    NaNd    NaNe    NaNf    NaNg    NaNh      DName: B, dtype: object
同样我们可以通过函数来设转换关系
def change(x):    y='A' if x==1 else 'B'    return y    loc_data['B'].map(change)Out[362]: a    Ab    Bc    Bd    Be    Bf    Bg    Bh    BName: B, dtype: object
apply函数与map函数不一样的地方在于,apply函数能够传入多个参数实现更复杂的操作,例如我想对列NEWB进行拼接新的字符'a',这是就需要传入额外的参数'a',需要用到apply函数。当然apply函数还有更复杂的应用,这里描述比较简单的。
'''先定义函数'''def append(x,bias):    y=x+bias    return y'''让apply函数使用所定义的函数'''loc_data['NEWB']=['B']*len(loc_data)loc_data['NEWB'].apply(append,args=('a'))Out[370]: a    Bab    Bac    Bad    Bae    Baf    Bag    Bah    BaName: NEWB, dtype: object
applymap的用法相对比较简单,与前面两个函数不同,主要是针对整一个数据集,例如我们先把数据集中的数值型数据挑选出来,再对这些数据保留4位小数显示
loc_data_n = loc_data.drop('NEWB',axis=1)loc_data_n.applymap(lambda x:"%.4f" % x)Out[376]:          A        B        C        Da   0.0000   1.0000   2.0000   3.0000b   4.0000   5.0000   6.0000   7.0000c   8.0000   9.0000  10.0000  11.0000d  12.0000  13.0000  14.0000  15.0000e  16.0000  17.0000  18.0000  19.0000f  20.0000  21.0000  22.0000  23.0000g  24.0000  25.0000  26.0000  27.0000h  28.0000  29.0000  30.0000  31.0000

汇总分析阶段

汇总分析阶段主要针对处理完的已有数据进行一些统计分析,偏向于展示, 不涉及原有数据的更改。也就是常说的描述性统计。
第一个最常用的数据为describe,输出数据的整体描述,包括数据的行数统计、平均值、标准差、最小最大值、标准差、各个分位数等等。
loc_data_n.describe()Out[377]:                A          B          C          Dcount   8.000000   8.000000   8.000000   8.000000mean   14.000000  15.000000  16.000000  17.000000std     9.797959   9.797959   9.797959   9.797959min     0.000000   1.000000   2.000000   3.00000025%     7.000000   8.000000   9.000000  10.00000050%    14.000000  15.000000  16.000000  17.00000075%    21.000000  22.000000  23.000000  24.000000max    28.000000  29.000000  30.000000  31.000000
如果还想分步实现以上的每一种统计的话,可以单独运行每种方法对应的语句。
'''单独实现count、mean、std等等'''loc_data_n.count()Out[379]: A    8B    8C    8D    8dtype: int64loc_data_n.mean()Out[380]: A    14.0B    15.0C    16.0D    17.0dtype: float64loc_data_n.std()Out[381]: A    9.797959B    9.797959C    9.797959D    9.797959dtype: float64loc_data_n.min()Out[382]: A    0B    1C    2D    3dtype: int64loc_data_n.max()Out[383]: A    28B    29C    30D    31dtype: int64'''实现分位数统计,在q里面设定'''loc_data_n.quantile(q=0.75)Out[385]: A    21.0B    22.0C    23.0D    24.0Name: 0.75, dtype: float64
还能从列的维度进行统计,以sum函数举例
loc_data_n.sum(axis='columns')Out[386]: a      6b     22c     38d     54e     70f     86g    102h    118dtype: int64
进一步地,我们想统计累计和
loc_data_n.cumsum()Out[387]:      A    B    C    Da    0    1    2    3b    4    6    8   10c   12   15   18   21d   24   28   32   36e   40   45   50   55f   60   66   72   78g   84   91   98  105h  112  120  128  136
与sum函数对比
loc_data_n.sum()Out[388]: A    112B    120C    128D    136dtype: int64

数据展示阶段

在数据进行汇总统计之后,我们还需要通过一些可视化的操作。同样都为数据分析的展示,一图胜千言,可视化的重要性主要在于给人一目了然的效果,特别是相对比较关心结果的领导和客户。我们可以在已经处理好的数据的基础上通过一些函数在图表上进行展现。

plot函数,主要用于简单绘制某列的趋势,这里以B列为例
loc_data_n['B'].plot()

a84262714b3ae1f28210bc2e3d64f347.png

plot函数加上bar参数,柱状图
loc_data_n['A'].plot(kind ='bar')

fa36e11ec206f7d654c7c8d797cc56e7.png

同样,柱状图可以横向地表现 ‍
loc_data_n['A'].plot(kind='barh')

46a576eceba9b2b889fdfffa5286f245.png

相应地,还可以对整体数据集来画柱状图
loc_data_n['A'].plot(kind='barh')
b644fbd72acd828a17fb74a33dc3ded8.png
当把数据放到二维坐标上表示,可以使用散点图,散点图能够描绘数据直接的关系这里的例子中把x轴当成数据A列,y轴当成数据B列
loc_data_n.plot(kind='scatter',x='A',y='B')
356fa1876bd4534876380e0d500ec49c.png

总结

总的来 说,我们这次的分享从 所理解的日常 数据分析工作阶段来对这些数据分析所涉及到的函数进行分类。在每部分的内容举一些代表性的函数为例,还有一些比较冷门能够实现一些专门的数据处理操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值