当前位置: 移动技术网 > IT编程>脚本编程>Python > 利用Python进行数据分析之pandas的高级用法

利用Python进行数据分析之pandas的高级用法

2017年12月28日  | 移动技术网IT编程  | 我要评论

夜半一点钟,浙江绿城吧,西游降魔篇高清下载

pandas

前面我们学习了pandas两种基本的数据结构Series和DataFrame以及基本功能,这节我们学习一下其他的略高级用法。

汇总和计算描述统计
df.sum(axis=1)
#求和,全为NaN才会NaN
df.mean(axis=1,skipna=False)
#平均数,有NaN结果就为NaN

这种约简方法的选项:

选项 说明 axis 约简的轴。DataFrame的行用0,列用1 skipna 排除缺失值,默认值为True level 如果轴是层次化索引的(即Multilndex),则根据level分组约简

汇总统计idxmin和idxmax:

df
out:
    one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3

df.idxmax()
out:
one b
two d

df.cumsum()
out:
      one    two
a    1.40   NaN
b   8.50   -4.5
c    NaN  NaN
d   9.25   -5.8

还有descripe 它是多个汇总统计:

df.describe()
out:
         one       two
count  3.000000  2.000000
mean   3.083333 -2.900000
std    3.493685  2.262742
min    0.750000 -4.500000
25%    1.075000 -3.700000
50%    1.400000 -2.900000
75%    4.250000 -2.100000
max    7.100000 -1.300000

 obj = Series(['a', 'a', 'b', 'c']* 4)
obj.describe()
out:
count     16
unique     3
top        a
freq       8

分别说明如下:

方法 说明 count 非NA值的数量 describe 针对Series或各DataFrame列计算汇总统计 min, max 计算最小值和最大值 argmin, argmax 计算能够获取到最小值和最大值的索引位置(整数) idxmin, idxmax 计算能够获取到最小值和最大值的索引值 quantile 计算样本的分位数(0到1) sum 值的总和 mean 值的平均数 median 值的算术中位数(50%分位数) mad 根据平均值计算平均绝对离差 var 样本值的方差 std 样本值的标准差 skew 样本值的偏度(三阶矩) kurt 样本值的峰度(四阶矩) cumsum 样本值的累计和 cummin. cummax 样本值的累计最大值和累计最小值 cumprod 样本值的累计积 diff 计算一阶差分《对时间序列很有用) pct_change 计算百分数变化 相关系数与协方差

corr()计算相关系数
cov()计算协方差
DataFrame的corrwith方法可以计算其列或行与另外一个Series或者DataFrame之间的相关系数

唯一值、值计数以及成员资格
obj=Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
uniques = obj.unique()
uniques
out:
array([c, a, d, b], dtype=object)

计算各值出现的频率:
obj.value_counts()
同时,它还是一个顶级的pandas方法,所以它还能这样写pd.value_count(obj.values)
默认降序排列,如果不要可以添加sort=False
isin用来判断是否存在,返回bool
obj.isin([‘b’,’c’])

方法 说明 isin 计算一个表示“Series各值是否包含于传入的值序列中”的布尔型数组 unique 计算Series中的唯一值数组,按发现的顺序返回 value_counts 返回一个Series,其索引为唯一值,其值为频率,按计数值降序排列 处理缺失数据

默认用NaN表示

  dropna fillna isnull notnull 滤除缺失数据

dropna默认丢弃任何含有缺失值的行,
加入how=’all’只丢弃全为NA的行。
(丢弃列用axis=1)
thresh=3 保留值(不为NaN)在3个或以上的。

填充缺失数据

这个其实之前也介绍过一点。
主要使用的fillna,它的参数有:

参数 说明 value 用于填充缺失值的标a值或字典对象 method 插值方式。如果函数调用时未指定其他参数的话,默认为”ffill” axis 待填充的轴,默认axis=0 inplace 修改调用者对象而不产生副本 limit (对于前向和后向填充)可以连续填充的最大数量 层次化索引 重排分级顺序

我的理解感觉就是强行把三维放在二维上,这个篇幅问题不详细说了,可以自行百度下,应该还是很好理解的。

重排分级顺序则是对轴上各级别的顺序的重新调整。

根据级别汇总统计
level选项来指定求和的级别。例如:
frame.sum(level='key2')
#则key2相同的进行求和
frame.sum(level='color', axis=1)
#指明列上的级别时,同时要指明axis=1
使用DataFrame的列

这个是什么意思呢,就是把DataFrame的一列或者多列当作行索引使用,如下:

frame =DataFrame({'a':range(7),'b':range(7,0,-1),
'c':['one','one','one','two','two','two','two'],'d': [0, 1, 2, 0,1,2,3]})

frame
out:
    a  b      c  d
0  0  7  one   0
1  1  6  one   1
2  2  5  one   2
3  3  4  two   0
4  4  3  two   1
5  5  2  two   2
6  6  1  two   3
frame2 = frame.set_index(['c','d'])
frame2
out: 
          a    b
c    d
one 0  0   7
       1  1   6
       2  2   5
two 0  3   4
       1  4   3
       2  5   2
       3  6   1

默认情况下那些列会被移除,但是可以通过添加参数drop=False保留下来。
移回来使用reset_index()与上面相反。

其他pandas的话题 整数索引

ser=Series(np.arange(3.))
ser[-1]这种情况下会报错,原因是它并不能分别你是要最后一个 还是索引是-1。
但是当非整数索引时它能知道是最后一个元素。

面板数据

panel数据结构作为三维版的DataFrame,有三个纬度供ix标签选取。暂时仅供了解。

总结

pandas的初步入门到这就结束了。总的来说其实就是这两种常用的数据结构Series,DataFrame的常用方法,尤其是DataFrame。感觉看完了也没有什么整体的概念,之后多使用的时候再来翻翻记录熟悉。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网