1、sum函数

df = pd.DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index = ['a','b','c','d'],columns = ['one','two'])df
Out[6]: one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3df.sum()
Out[7]:
one    9.25
two   -5.80
dtype: float64df.sum(axis=1)  #NA值会自动排除,除非整个切片添加skipna禁用该功能
Out[8]:
a    1.40
b    2.60
c    0.00
d   -0.55
dtype: float64

df.mean(axis=1,skipna = False)  #skipna 禁用na
Out[10]:
a      NaN
b    1.300
c      NaN
d   -0.275
dtype: float64

df.idxmax()  #idxmax和idxmin返回的是间接统计(比如达到最小值和最大值的索引)
Out[13]:
one    b
two    d
dtype: objectdf.cumsum() #案列累计
Out[14]: one  two
a  1.40  NaN
b  8.50 -4.5
c   NaN  NaN
d  9.25 -5.8

一次性产生多个汇总

df.describe()
Out[15]: 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

对于非数值数据,describe会产生另外一种汇总统计:

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

2、Series的corr用于计算两个Series中重叠的、非NA的按索引对齐的相关系数,类似COV用于计算协方差

DataFrame的corr和cov将以DataFrame的形式返回完整的相关系数或协方差矩阵

利用DataFrame的corrwith方法,你可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回另一个Series(针对各列进行计算)

3、Series

value_count计算频数    obj.unique.sort()排序加唯一值

value_count适用于任何数组和序列

isin 计算一个Series各值是否包含于传入的值序列中的 布尔型数组

4、处理缺失数据

1、Series滤除缺失数据:dropna方法

DataFrame滤除用dropna方法会滤除含有NA的行和列:

from numpy import nan as NAdata = pd.DataFrame([[1.,6.5,3],[1,NA,NA],[NA,NA,NA],[NA,6.5,3.]])cleaned = data.dropna()data
Out[64]: 0 1 2 0 1 6.5 3 1 1 NaN NaN 2 NaN NaN NaN 3 NaN 6.5 3 cleaned Out[65]: 0 1 2 0 1 6.5 3

传入how =‘all’将只会丢弃全为NA的那些行

data.dropna(how = 'all')
Out[66]: 0    1   2 0 1 6.5 3 1 1 NaN NaN 3 NaN 6.5 3

thresh=3,会在一行中至少有 3 个非 NA 值时将其保留。

df = pd.DataFrame(np.random.randn(7,3))df
Out[70]: 0         1         2
0 -0.182777  0.122331  1.177341
1 -0.113750  0.565018  0.460551
2  1.569241 -0.244783 -0.584233
3  1.230427 -0.749321 -0.408792
4  1.342502  1.474066 -1.078444
5  0.730472 -0.835126  0.845470
6 -0.455549 -1.051597  0.875379df.ix[:4,1] = NA;df.ix[:2,2] = NAdf
Out[72]: 0 1 2 0 -0.182777 NaN NaN 1 -0.113750 NaN NaN 2 1.569241 NaN NaN 3 1.230427 NaN -0.408792 4 1.342502 NaN -1.078444 5 0.730472 -0.835126 0.845470 6 -0.455549 -1.051597 0.875379 df.dropna(thresh =3) Out[73]: 0 1 2 5 0.730472 -0.835126 0.845470 6 -0.455549 -1.051597 0.875379

填充缺失数据:

常数调用fillna会将缺失值替换为那个常数值:

df.fillna(0)
Out[75]: 0         1         2
0 -0.182777  0.000000  0.000000
1 -0.113750  0.000000  0.000000
2  1.569241  0.000000  0.000000
3  1.230427  0.000000 -0.408792
4  1.342502  0.000000 -1.078444
5  0.730472 -0.835126  0.845470
6 -0.455549 -1.051597  0.875379df.fillna({1:1.5555,2:111111})    #1:1.5555代表在第一列找到NA值填充为1.5555
Out[76]: 0 1 2 0 -0.182777 1.555500 111111.000000 1 -0.113750 1.555500 111111.000000 2 1.569241 1.555500 111111.000000 3 1.230427 1.555500 -0.408792 4 1.342502 1.555500 -1.078444 5 0.730472 -0.835126 0.845470 6 -0.455549 -1.051597 0.875379

fillna默认会返回新的对象,同时也可以在旧的对象上进行修改:

_ = df.fillna(0,inplace = True)df
Out[79]: 0         1         2
0 -0.182777  0.000000  0.000000
1 -0.113750  0.000000  0.000000
2  1.569241  0.000000  0.000000
3  1.230427  0.000000 -0.408792
4  1.342502  0.000000 -1.078444
5  0.730472 -0.835126  0.845470
6 -0.455549 -1.051597  0.875379

对reindex适用的方法同样适用于fillna:

df.fillna(method = 'ffill')
Out[82]: 0         1         2 0 0.441535 -0.330724 0.789183 1 0.666540 1.958989 -0.817482 2 -2.027360 0.416607 0.052060 3 -0.163996 -0.682905 0.926443 4 -1.163515 1.788535 -2.014879 5 0.483060 -1.225616 -0.021665 df.fillna(method='ffill',limit = 2) Out[83]: 0 1 2 0 0.441535 -0.330724 0.789183 1 0.666540 1.958989 -0.817482 2 -2.027360 0.416607 0.052060 3 -0.163996 -0.682905 0.926443 4 -1.163515 1.788535 -2.014879 5 0.483060 -1.225616 -0.021665

2、层次化索引

在一个轴上拥有多个(两个以上)的索引级别,可以低维度形式处理高纬度数据。创建一个Series,并用一个列表或数组组成的列表作为索引。

data =pd.Series(np.random.randn(10),index = [['a','a','a','b','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,2,3]]) data Out[90]: a 1 1.263309 2 -1.726591 3 0.084191 b 1 3.110524 2 -1.285000 3 0.741029 c 1 -1.443983 2 -0.775486 d 2 1.340332 3 -0.066965 dtype: float64

可用unstack聚合函数将DataFrame聚合:

data.unstack()           #逆运算是stack
Out[92]: 1         2         3
a  1.263309 -1.726591  0.084191
b  3.110524 -1.285000  0.741029
c -1.443983 -0.775486 NaN d NaN 1.340332 -0.066965

重排分级顺序:

frame = pd.DataFrame(np.arange(12).reshape((4,3)),index = [['a','a','b','b'],[1,2,1,2]],columns = [['Ohio','Ohio','Colorado'],['Green','Red','Green']]) frame Out[101]: Ohio Colorado Green Red Green a 1 0 1 2 2 3 4 5 b 1 6 7 8 2 9 10 11 frame.index.names = ['key1','key2'] frame.columns.names = ['state','color'] frame Out[104]: state Ohio Colorado color Green Red Green key1 key2 a 1 0 1 2 2 3 4 5 b 1 6 7 8 2 9 10 11

用swaplevel来进行转换外层级别:

frame.swaplevel('key1','key2') Out[105]: state Ohio Colorado color Green Red Green key2 key1 1 a 0 1 2 2 a 3 4 5 1 b 6 7 8 2 b 9 10 11

sortlevel(1)  swaplevel(0,1) 对索level进行排序

使用DataFrame的列:DataFrame的sex_index函数会将其一个或多个列转换为行索引,并创建一个新索引

frame = pd.DataFrame({'a':range(7),'b':range(7,0,-1),'c':['one','one','one','two','two','two','tow'],'d':[0,1,2,0,1,2,3]}) frame Out[115]: 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 tow 3 frame2 = frame.set_index(['c','d']) #默认情况下,那些列会从DataFrame中移除,但可以添加 drop = False 来 frame2 Out[117]: a b c d one 0 0 7 1 1 6 2 2 5 two 0 3 4 1 4 3 2 5 2 tow 3 6 1

不考虑索引类型的、基于位置的索引,可以使用Series的iget_value方法和DataFrame的irow和icol方法:

ser3 = pd.Series(range(3),index = [-5,1,3])ser3.iget_value(2)      #基于索引位置的值
Out[129]: 2frame = pd.DataFrame(np.arange(6).reshape(3,2),index = [2,0,1])

转载于:https://www.cnblogs.com/groupe/p/4938191.html

利用Python进行数据分析-07-汇总和计算描述统计相关推荐

  1. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  2. 数据基础---《利用Python进行数据分析·第2版》第12章 pandas高级应用

    之前自己对于numpy和pandas是要用的时候东学一点西一点,直到看到<利用Python进行数据分析·第2版>,觉得只看这一篇就够了.非常感谢原博主的翻译和分享. 前面的章节关注于不同类 ...

  3. 利用python进行数据分析_从删库到跑路

    目录 前言 一 numpy模块 1.numpy的数据结构:多维数组ndarray 数组转置和轴对换 矩阵内积 通用函数 利用数组进行数据处理(矢量化) 将条件逻辑表述为数组运算 数组和统计法方法 约简 ...

  4. 用python做数据分析pdf_利用python进行数据分析pdf

    利用python进行数据分析pdf微盘下载!<利用python进行数据分析>利用Python实现数据密集型应用由浅入深帮助读者解决数据分析问题~适合刚刚接触Python的分析人员以及刚刚接 ...

  5. dataframe修改数据_利用Python进行数据分析(语法篇)

    一.数据 结构化数据: 1.多维数组--矩阵 2.表格型数据(关系型数据库中的数据) 3.通过关键列相连接的表 4.间隔平均或者不平均的时间序列 二.关于iPython 三.Numpy学习 numpy ...

  6. pandas 转化np数据_利用Python进行数据分析(语法篇)

    一.数据 结构化数据: 1.多维数组--矩阵 2.表格型数据(关系型数据库中的数据) 3.通过关键列相连接的表 4.间隔平均或者不平均的时间序列 二.关于iPython 三.Numpy学习 numpy ...

  7. 利用python进行数据分析——第十四章_数据分析案例

    文章目录 本章中的数据文件可从下面的github仓库中下载 利用python进行数据分析(第二版) 一.从Bitli获取 1.USA.gov数据 1.1纯python时区计数 1.2使用pandas进 ...

  8. 数据基础---《利用Python进行数据分析·第2版》第11章 时间序列

    之前自己对于numpy和pandas是要用的时候东学一点西一点,直到看到<利用Python进行数据分析·第2版>,觉得只看这一篇就够了.非常感谢原博主的翻译和分享. 时间序列(time s ...

  9. 整理总结:利用Python进行数据分析及思维导图

    参考资料:机械工业出版社的<利用Python进行数据分析>(思维导图在最后面) 本篇目录 参考资料:机械工业出版社的<利用Python进行数据分析>(思维导图在最后面) 第一章 ...

  10. 《利用python进行数据分析》读书笔记

    <利用python进行数据分析>是一本利用python的Numpy.Pandas.Matplotlib库进行数据分析的基础介绍,非常适合初学者. 重要的python库 NumPy http ...

最新文章

  1. asp.net ajax聊天室,ASP.NET MVC4异步聊天室的示例代码
  2. 【Kotlin】扩展接收者 与 分发接收者 ( 类内部扩展用法 | 注意事项 | open 修饰扩展 )
  3. 怎样用python绘制简单的图形_使用python绘制图形并使用HTML显示它
  4. SSD: how to optimize your Solid State Drive for Linux Mint 17.3, Ubuntu 16.04 and Debian
  5. Oracle 原理: 过程和函数
  6. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】
  7. Kettle转换作业50个案例代码
  8. Zabbix4.0 for PostgreSQL (上篇):基础环境的搭建部署
  9. Nginx配置优化参考
  10. 领域驱动DDD原理简介与实践
  11. TensorFlow 学习指南 二、线性模型
  12. [毕业生的商业软件开发之路]系列文章目录规划
  13. Python 紧急修复远程代码执行漏洞
  14. unity3D ——自带寻路Navmesh入门教程(一)(转)
  15. No WebApplicationContext found: no ContextLoaderListener registered?
  16. 微信小游戏破解(2)之《我要猫咪》
  17. 【SEED Lab】ARP Cache Poisoning Attack Lab
  18. mule seda 学习二
  19. C中二级指针与它指向的一级指针之间的秘密(深入++*pptr)
  20. 2021年信息学部物联网工程学院学生科协前端大培训

热门文章

  1. 你需要的不是重构,而是理清业务逻辑(转)
  2. window.showModalDialog用法介绍
  3. Lintcode18 Subsets II solution 题解
  4. UML学习总结(3)——StarUML指导手册
  5. 访问修饰符的个人理解-private与protected
  6. 站长常用广告代码的表达大全
  7. 爬取小说 spider
  8. Android中配置JDK和SDK的环境变量
  9. Android SQLite调试
  10. 浅谈Linux中的信号处理机制(三)