python数据分析之Pandas:基本功能介绍
Pandas有两个主要的数据结构:Series和DataFrame.
Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签构成.来看下它的使用过程
In [1]: from pandas import Series,DataFrame
In [2]: import pandas as pd
In [3]: obj=Series([4,7,-5,3])
In [5]: obj
Out[5]:
0 4
1 7
2 -5
3 3
dtype: int64
通过Series生成的对象左边是索引,右边是具体的值.如果我们没有指定索引,那么会默认的生成一个.可以通过values和index来查看对应的值和索引.
In [6]: obj.values
Out[6]: array([ 4, 7, -5, 3])
In [7]: obj.index
Out[7]: RangeIndex(start=0, stop=4, step=1)
如果我们想指示索引,可以在生成的时候通过index来指示对应的索引
In [8]: obj2=Series([4,7,-5,3],index=['a','b','c','d'])
In [9]: obj2
Out[9]:
a 4
b 7
c -5
d 3
dtype: int64
通过对应的索引就可以访问对应的值
In [10]: obj2['a']
Out[10]: 4
通过numpy数组运算后的结果也会保留索引和值之间的链接:
In [12]: np.exp(obj2)
Out[12]:
a 54.598150
b 1096.633158
c 0.006738
d 20.085537
dtype: float64
如果数据存在字典中,那么也可以通过这个字典来创建Series.创建之后索引就是字典中的key值.
In [13]: data={'name':'zhf','age':33,'city':'chengdu'}
In [14]: obj3=Series(data)
In [15]: obj3
Out[15]:
age 33
city chengdu
name zhf
dtype: object
DataFrame:
DataFrame是一个表格形的数据结构.DataFrame既有行索引也有列索引,可以被看作是Series组成的字典.
In [25]: data={'city':['chongqing','chengdu','beijing'],'weather':['rainy','suns
...: haw','snow'],'temperature':[9,5,-3]}
In [26]: frame=DataFrame(data)
In [27]: frame
Out[27]:
city temperature weather
0 chongqing 9 rainy
1 chengdu 5 sunshaw
2 beijing -3 snow
但是生成的数据的列索引和我们初始化data的时候不一样,如果我们想按照初始化data的索引顺序来生成的话就要在DataFrame中指定columns
In [28]: frame=DataFrame(data,columns=['city','weather','temperature'])
In [29]: frame
Out[29]:
city weather temperature
0 chongqing rainy 9
1 chengdu sunshaw 5
2 beijing snow -3
同样的也可以指示行索引的值
In [30]: frame=DataFrame(data,columns=['city','weather','temperature'],index=['f
...: irst','second','third'])
In [31]: frame
Out[31]:
city weather temperature
first chongqing rainy 9
second chengdu sunshaw 5
third beijing snow -3
有了索引后就可以通过索引访问对应的行和列的数据.
通过列索引访问
In [33]: frame.city
Out[33]:
first chongqing
second chengdu
third beijing
Name: city, dtype: object
通过行索引访问
In [41]: frame.loc['first']
Out[41]:
city chongqing
weather rainy
temperature 9
Name: first, dtype: object
另外一种常见的形式就是嵌套字典(也就是字典的字典)
这种格式的生成外层字典的键作为列,内层键则作为行索引
In [42]: pop={'cost':{2016:3000,2017:3400,2018:5000},'need':{2017:4000,2018:6000
...: }}
In [43]: frame3=DataFrame(pop)
In [44]: frame3
Out[44]:
cost need
2016 3000 NaN
2017 3400 4000.0
2018 5000 6000.0
当然也可以转置
In [45]: frame3.T
Out[45]:
2016 2017 2018
cost 3000.0 3400.0 5000.0
need NaN 4000.0 6000.0
基本功能:
一 重新索引
首先来看下之前生成的数据,返回一个index对象.然后通过index[1]=’a’的形式来修改
In [50]: obj.index
Out[50]: RangeIndex(start=0, stop=4, step=1)
In [51]: index=obj.index
In [52]: index[1]='a'
会提示如下的错误,Index does not support mutable operations.表示index对象是不可以修改的对象.因此无法通过这种方式进行修改
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-52-336c3a4c2807> in <module>()
----> 1 index[1]='a'
/usr/local/lib/python2.7/dist-packages/pandas/core/indexes/base.pyc in __setitem__(self, key, value)
1722
1723 def __setitem__(self, key, value):
-> 1724 raise TypeError("Index does not support mutable operations")
1725
1726 def __getitem__(self, key):
TypeError: Index does not support mutable operations
要想修改序列,只能通过obj.reindex的方法.
In [60]: obj.reindex(['a','b','c','d','e'])
二丢弃指定轴上的项
可以通过drop的方法来丢弃某个行上的数据,参数即是行索引
In [64]: obj
Out[64]:
1 4
2 7
3 5
4 3
dtype: int64
In [65]: new=obj.drop(1)
In [66]: new
Out[66]:
2 7
3 5
4 3
dtype: int64
三索引,选取和过滤
在python的列表和元组中,我们可以通过切片来得到我们想要的信息,同样的在pandas中也可以通过切片来得到信息.
In [67]: obj[2:4]
Out[67]:
3 5
4 3
dtype: int64
对于之前的嵌套字典,也可以通过切片的方式进行访问.
In [81]: frame
Out[81]:
city weather temperature
first chongqing rainy 9
second chengdu sunshaw 5
third beijing snow -3
In [82]: frame[0:1]
Out[82]:
city weather temperature
first chongqing rainy 9
或者是通过ix来访问单个的行
In [83]: frame.ix[1]
Out[83]:
city chengdu
weather sunshaw
temperature 5
Name: second, dtype: object
三 算术运算和数据对齐
在对象进行相加的时候,如果存在不同的索引对,则结果的索引就是该索引的并集.如下面2个数据,只有一个索引’a’是能够对应得上的.因此相加后只有索引a才有结果其他都是空值
In [84]: s1=Series([1,2,3,4],index=['a','b','c','d'])
In [85]: s2=Series([5,6,7,8],index=['x','a','y','z'])
In [86]: s1+s2
Out[86]:
a 7.0
b NaN
c NaN
d NaN
x NaN
y NaN
z NaN
dtype: float64
四 在算术方法中填充值
前面介绍到如果相加后没有相同的索引值,那么对应的值就会被填充为NaN,如果我们期望填充某个固定的值比如0的话该如何操作呢,可以使用s1.add(s2,fill_value=0)的方式,这样的话就可以呈现出0而不是NaN
五 DataFrame和Series之间的运算
来看一个具体的例子
In [111]: frame=DataFrame(np.arange(12).reshape((4,3)),columns=list('bde'),index
...: =['a1','a2','a3','a4'])
In [119]: series=frame.ix[0]
In [120]: series
Out[120]:
b 0
d 1
e 2
Name: a1, dtype: int64
DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后进行相减
In [122]: frame
Out[122]:
b d e
a1 0 1 2
a2 3 4 5
a3 6 7 8
a4 9 10 11
In [123]: frame-series
Out[123]:
b d e
a1 0 0 0
a2 3 3 3
a3 6 6 6
a4 9 9 9
六 排序和排名
要对行或者列索引进行排序,可使用sort_index的方法,它将返回一个已排序的新对象
In [133]: frame
Out[133]:
e c d
a3 0 1 2
a2 3 4 5
a0 6 7 8
a1 9 10 11
对行索引进行排序
In [134]: frame.sort_index()
Out[134]:
e c d
a0 6 7 8
a1 9 10 11
a2 3 4 5
a3 0 1 2
对列索引进行排序
In [135]: frame.sort_index(axis=1)
Out[135]:
c d e
a3 1 2 0
a2 4 5 3
a0 7 8 6
a1 10 11 9
如果要对具体某一列的的数据进行排序的话可以采用传入参数by的方式.这里sort_index和sort_values都是一样的效果.
In [139]: frame.sort_values(by='d')
Out[139]:
e c d
a3 0 1 2
a2 3 4 5
a0 6 7 8
a1 9 10 11
python数据分析之Pandas:基本功能介绍的更多相关文章
- Python数据分析之pandas基本数据结构:Series、DataFrame
1引言 本文总结Pandas中两种常用的数据类型: (1)Series是一种一维的带标签数组对象. (2)DataFrame,二维,Series容器 2 Series数组 2.1 Series数组构成 ...
- Python数据分析库pandas基本操作
Python数据分析库pandas基本操作2017年02月20日 17:09:06 birdlove1987 阅读数:22631 标签: python 数据分析 pandas 更多 个人分类: Pyt ...
- Python 数据分析:Pandas 缺省值的判断
Python 数据分析:Pandas 缺省值的判断 背景 我们从数据库中取出数据存入 Pandas None 转换成 NaN 或 NaT.但是,我们将 Pandas 数据写入数据库时又需要转换成 No ...
- Python数据分析之pandas学习
Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利 ...
- python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...
- Python数据分析之pandas
Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利 ...
- Python数据分析之Pandas操作大全
从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...
- python数据分析之pandas库的Series应用
一.pandas的数据结构介绍 1. Series 1.1 Series是由一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据索引构成.仅由一组数据可产生最简单的Series. from p ...
- python数据分析工具——Pandas、StatsModels、Scikit-Learn
Pandas Pandas是 Python下最强大的数据分析和探索工具.它包含高级的数据结构和精巧的工具,使得在 Python中处理数据非常快速和简单. Pandas构建在 Numpy之上,它使得以 ...
- 第11.13节 Python正则表达式的转义符”\”功能介绍
为了支持特殊元字符在特定场景下能表示自身而不会被当成元字符进行匹配出来,可以通过字符集或转义符表示方法来表示,字符集表示方法前面在<第11.4节 Python正则表达式搜索字符集匹配功能及元字符 ...
随机推荐
- ZFS -世界上最高级的文件系统之一
https://www.oschina.net/news/44302/openzfs_launch_announcement https://en.wikipedia.org/wiki/ZFS ZFS ...
- C语言实现的水仙花数
#include <stdio.h>void main(){ int ge,shi,bai; for (int i =100; i < 1000; i++) { ...
- VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)
VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图) 1. 在资源窗口里新建一个FormView的Dialog,修改ID为 ...
- 线程中的WaitForSingleObject和Event的用法
http://chinaxyw.iteye.com/blog/548622 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. CreateEvent ...
- js 选项卡封装
function tab(input,div){ for(var i = 0; i < input.length; i++){ input[i].index = i; input[i].oncl ...
- apache TIME_WAIT解决办法
最近发现apache与负载均衡器的的连接数过多,而且大部分都是TIME_WAIT,调整apache2.conf后也没效果,最后百度到如下解决方案 通过调整内核参数解决 vi /etc/sysctl.c ...
- win10 只要打开文件对话框就卡死解决方法
我电脑的问题是:win10系统,只要打开 文件对话框就卡死,假死,cpu100% 一直没有解决,但是只要把缩略图关了,就ok. 但是又想要留着缩略图,还是得显示,于是乎一直在找解决办法. 此方法好像可 ...
- Vue2.0 引用 exif.js 实现调用摄像头进行拍照功能以及图片上传功能
vue组件代码 <template> <div> <div style="padding:20px;"> <div class=" ...
- SM Java实现
[摘要] 本文主要解说"国密加密算法"SM系列的Java实现方法,不涉及详细的算法剖析,在网络上找到的java实现方法比較少.切在跨语言加密解密上会存在一些问题.所以整理此文志之. ...
- [Android]egit取消文件版本号控制
开发项目,多人合作开发变得越来越重要了,在此同一时候,使用git作为协同工具也是越来越多.在此.介绍一下egit取消文件版本号控制的方法. (egit即为eclipse中的git插件) 1.打开Nav ...