pandas 学习(2): pandas 数据结构之DataFrame
DataFrame 类型类似于数据库表结构的数据结构,其含有行索引和列索引,可以将DataFrame 想成是由相同索引的Series组成的Dict类型。在其底层是通过二维以及一维的数据块实现。
1. DataFrame 对象的构建
1.1 用包含等长的列表或者是NumPy数组的字典创建DataFrame对象
In [68]: import pandas as pd In [69]: from pandas import Series,DataFrame
# 建立包含等长列表的字典类型
In [70]: data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],'year': [2000, 2001, 20
...: 02, 2001, 2002],'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
In [71]: data
Out[71]:
{'pop': [1.5, 1.7, 3.6, 2.4, 2.9],
'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002]}
# 建立DataFrame对象
In [72]: frame1 = DataFrame(data)
# 红色部分为自动生成的索引
In [73]: frame1
Out[73]:
pop state year
0 1.5 Ohio 2000
1.7 Ohio 2001
3.6 Ohio 2002
2.4 Nevada 2001
2.9 Nevada 2002
在建立过程中可以指点列的顺序:
In [74]: frame1 = DataFrame(data,columns=['year', 'state', 'pop']) In [75]: frame1
Out[75]:
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
和Series一样,DataFrame也是可以指定索引内容:
In [76]: ind = ['one', 'two', 'three', 'four', 'five']
In [77]: frame1 = DataFrame(data,index = ind) In [78]: frame1
Out[78]:
pop state year
one 1.5 Ohio 2000
two 1.7 Ohio 2001
three 3.6 Ohio 2002
four 2.4 Nevada 2001
five 2.9 Nevada 2002
1.2. 用由字典类型组成的嵌套字典类型来生成DataFrame对象
当由嵌套的字典类型生成DataFrame的时候,外部的字典索引会成为列名,内部的字典索引会成为行名。生成的DataFrame会根据行索引排序
In [84]: pop = {'Nevada': {2001: 2.4, 2002: 2.9},'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}} In [85]: frame3 = DataFrame(pop) In [86]: frame3
Out[86]:
Nevada Ohio
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
除了使用默认的按照行索引排序之外,还可以指定行序列:
In [95]: frame3 = DataFrame(pop,[2002,2001,2000]) In [96]: frame3
Out[96]:
Nevada Ohio
2002 2.9 3.6
2001 2.4 1.7
2000 NaN 1.5
1.3 其它构造方法:
2. DataFrame 内容访问
从DataFrame中获取一列的结果为一个Series,可以通过以下两种方式获取:
# 以字典索引方式获取
In [100]: frame1["state"]
Out[100]:
one Ohio
two Ohio
three Ohio
four Nevada
five Nevada
Name: state, dtype: object
# 以属性方式获取
In [101]: frame1.state
Out[101]:
one Ohio
two Ohio
three Ohio
four Nevada
five Nevada
Name: state, dtype: object
也可以通过ix获取一行数据:
In [109]: frame1.ix["one"] # 或者是 frame1.ix[0]
Out[109]:
pop 1.5
state Ohio
year 2000
Name: one, dtype: object
# 获取多行数据
In [110]: frame1.ix[["tow","three","four"]]
Out[110]:
pop state year
tow NaN NaN NaN
three 3.6 Ohio 2002.0
four 2.4 Nevada 2001.0
# 还可以通过默认数字行索引来获取数据
In [111]: frame1.ix[range(3)]
Out[111]:
pop state year
one 1.5 Ohio 2000
two 1.7 Ohio 2001
three 3.6 Ohio 2002
获取指定行,指定列的交汇值:
In [119]: frame1["state"]
Out[119]:
one Ohio
two Ohio
three Ohio
four Nevada
five Nevada
Name: state, dtype: object In [120]: frame1["state"][0]
Out[120]: 'Ohio' In [121]: frame1["state"]["one"]
Out[121]: 'Ohio'
先指定列再指定行:
In [125]: frame1.ix[0]
Out[125]:
pop 1.5
state Ohio
year 2000
Name: one, dtype: object In [126]: frame1.ix[0]["state"]
Out[126]: 'Ohio' In [127]: frame1.ix["one"]["state"]
Out[127]: 'Ohio' In [128]: frame1.ix["one"][0]
Out[128]: 1.5 In [129]: frame1.ix[0][0]
Out[129]: 1.5
3. DataFrame 对象的修改
增加一列,并所有赋值为同一个值:
# 增加一列值
In [131]: frame1["debt"] = 10 In [132]: frame1
Out[132]:
pop state year debt
one 1.5 Ohio 2000 10
two 1.7 Ohio 2001 10
three 3.6 Ohio 2002 10
four 2.4 Nevada 2001 10
five 2.9 Nevada 2002 10
# 更改一列的值
In [133]: frame1["debt"] = np.arange(5) In [134]: frame1
Out[134]:
pop state year debt
one 1.5 Ohio 2000 0
two 1.7 Ohio 2001 1
three 3.6 Ohio 2002 2
four 2.4 Nevada 2001 3
five 2.9 Nevada 2002 4
追加类型为Series的一列
# 判断是否为东部区
In [137]: east = (frame1.state == "Ohio") In [138]: east
Out[138]:
one True
two True
three True
four False
five False
Name: state, dtype: bool
# 赋Series值
In [139]: frame1["east"] = east In [140]: frame1
Out[140]:
pop state year debt east
one 1.5 Ohio 2000 0 True
two 1.7 Ohio 2001 1 True
three 3.6 Ohio 2002 2 True
four 2.4 Nevada 2001 3 False
five 2.9 Nevada 2002 4 False
DataFrame 的行可以命名,同时多列也可以命名:
In [145]: frame3.columns.name = "state" In [146]: frame3.index.name = "year" In [147]: frame3
Out[147]:
state Nevada Ohio
year
2002 2.9 3.6
2001 2.4 1.7
2000 NaN 1.5
pandas 学习(2): pandas 数据结构之DataFrame的更多相关文章
- python之pandas学习笔记-pandas数据结构
pandas数据结构 pandas处理3种数据结构,它们建立在numpy数组之上,所以运行速度很快: 1.系列(Series) 2.数据帧(DataFrame) 3.面板(Panel) 关系: 数据结 ...
- pandas 学习 第5篇:DataFrame - 访问数据框
数据框是用于存储数据的二维结构,分为行和列,一行和一列的交叉位置是一个cell,该cell的位置是由行索引和列索引共同确定的.可以通过at/iat,或loc/iloc属性来访问数据框的元素,该属性后跟 ...
- pandas 学习 第7篇:DataFrame - 数据处理(应用、操作索引、重命名、合并)
DataFrame的这些操作和Series很相似,这里简单介绍一下. 一,应用和应用映射 apply()函数对每个轴应用一个函数,applymap()函数对每个元素应用一个函数: DataFrame. ...
- pandas 学习 第6篇:DataFrame - 数据处理(长宽格式、透视表)
长宽格式的转换 宽格式是指:一列或多列作为标识变量(id_vars),其他变量作为度量变量(value_vars),直观上看,这种格式的数据比较宽,举个列子,列名是:id1.id2.var1.var2 ...
- Pandas 学习 第9篇:DataFrame - 数据的输入输出
常用的数据存储介质是数据库和csv文件,pandas模块包含了相应的API对数据进行输入和输出: 对于格式化的平面文件:read_table() 对于csv文件:read_csv().to_csv() ...
- Pandas学习2 --- 数据类型Series、DataFrame
为了更加清楚显示,请点击链接用Jupyter Notebook 查看:截图如下,
- Pandas 学习笔记
Pandas 学习笔记 pandas 由两部份组成,分别是 Series 和 DataFrame. Series 可以理解为"一维数组.列表.字典" DataFrame 可以理解为 ...
- pandas 学习(1): pandas 数据结构之Series
1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...
- pandas 学习 第1篇:pandas基础 - 数据结构和数据类型
pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,是数据分析必不可少的五个包之一.pandas包含序列Series和数据框DataFrame两种最主要数据结构,索引 ...
- 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame
在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...
随机推荐
- HTML5本地存储——IndexedDB(一:基本使用)
在HTML5本地存储——Web SQL Database提到过Web SQL Database实际上已经被废弃,而HTML5的支持的本地存储实际上变成了 Web Storage(Local Stora ...
- linux系统下sendmail的搭建
学习鸟哥linux私房菜所得 sendmail 可以使用rpm -qa |grep sendmail来查看一下是否已安装sendmail-cf和sendmail 如果没有安装可用yum -y inst ...
- VirtualBox Guest Additions 在CentOS中无法安装的解决方法
安装时出现一步错误查看log为(log文件是 /var/log/vboxadd-install.log): /tmp/vbox.0/Makefile.include.header:94: *** Er ...
- ssh保持链接
修改/etc/ssh/sshd_config配置文件 ClientAliveInterval 300(默认为0), 参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接,使用service ...
- @SuppressWarnings注解的用法
一.前言 编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的"感叹号"就严重阻碍了我们判断该行是否设置的断点了.这时我们可以在方法前添加 @S ...
- ubuntu下安装mysql及卸载mysql方法
1. 删除mysql a. sudo apt-get autoremove --purge mysql-server-5.0 b. sudo apt-get remove mysql-server c ...
- Bash 中的环境变量
在 Bash 里,可以通过 export 命令查看当前 Shell 进程的环境变量,这些环境变量一些是 Bash 自己创建的,还有一些是 Bash 从父进程继承来的,然而需要注意的是,父进程传给 Ba ...
- [译]reset, checkout和revert
git reset, git checkout, git revert能让你撤销你本地仓储的一些修改, 前两种命令可以作用于commit或者一个文件. Commit级别的操作 注意了git reve ...
- class Solution(object): def fizzBuzz(self, n): a = [] i = 1 while(i <= n): if(i%15 == 0): a.append("FizzBuzz") elifleetcode day_01
412. Fizz Buzz Write a program that outputs the string representation of numbers from 1 to n. But fo ...
- Nginx 限速模块一览
为了保护服务器不被刷流量,或者业务方面的一些限制,需要做一些限速措施. 一.http 请求并发连接数模块:ngx_http_limit_conn_module 这个模块可以设置每个定义的变量(比如客户 ...