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正则表达式搜索字符集匹配功能及元字符 ...
随机推荐
- advanced-performance-troubleshooting-waits-latches-spinlocks
https://www.sqlskills.com/blogs/paul/advanced-performance-troubleshooting-waits-latches-spinlocks/
- asp.net 面试题(附答案)
这次面试遇到的一些问题有很基础,也有的一些我没有听过.根据经验不同或应聘职位和公司的不同等,遇到的面试问题肯定也不一样.本人两年半asp.net开发经验,这是我年后应聘asp.net工程师遇到的问题, ...
- HTML小技巧将table边框改为细线
HTML制作新手在用TABLE表格时,会碰到如何改变边线粗线,因为默认的TABLE边线设置即使是1px 是很粗的.因此会使用其他一些方法来制作出细线边框,这里介绍一种利用CSS来实现细线的方法,很有效 ...
- MATLAB基础操作符与数据格式显示
1.冒号":" 基本使用如下: X=1:10:表示生成向量[1,2,3,4,5,6,7,8,9,10] X=J:i:k ;表示向量[j,j+i,j+2i,...,k]; A(:,j ...
- EasyMvc入门教程-高级控件说明(16)信息框控件
网页开发的时候,会经常向用户显示一些信息,比如执行结果,注意事项等,下面展示一种最简单的信息提示: 代码如下: @Html.Q().Msg().Text("初始化信息").Auto ...
- EXCEL最大行数问题:org.apache.xmlbeans.impl.store.Saver$TextSaver.resize(Saver.java:1700)
今天在使用POI导出数据时,出现如下错误: ES查询阅读推荐比: resList: start: 写入excel Exception in thread "main" java.l ...
- 【重点突破】——第三方绘图工具FusionCharts.js的使用详解
一.引言 项目组中,经常会因为绘制图表的繁杂度,衡量会不会使用第三方绘图工具,如果自己做很困难,成本使用高于第三方绘图工具库,就会使用.很多人使用的是Chart.js,因为它是免费使用的,不过,缺点就 ...
- bootstrap selectpicker使用问题
文档查阅:http://silviomoreto.github.io/bootstrap-select/options/ 1.实用属性 size:5 表示下拉列表默认展示5行(ie8展示4.5行) ...
- 【Excle数据透视表】如何复制数据透视表
左边创建完数据透视表,右边是复制过去的部分数据透视表---显示数值状态的内容,为什么复制过来的不是数据透视表呢? 解决办法: 全选定数据透视表再进行粘贴复制 步骤一 单击数据透视表任意单元格→分析→操 ...
- 重读金典------高质量C编程指南(林锐)-------第六章 函数设计
函数设计最重要的无外乎两个方面,一个是函数的接口设计一个是内部实现的一些规则. 在C语言中,函数的参数和返回值的传递方式分为两种: 值传递与指针传递.而C++中,多了一个引用传递. 引用传递有些像指针 ...