pandas 数据结构之DataFrame
来源:互联网 发布:客户信息记录软件 编辑:程序博客网 时间:2024/06/09 18:48
DataFraame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。DataFrame既有行索引也有列索引,可以被看作由Series组成的字典(共用同一个索引)。
DataFrame 对象的构建
用字典类型构建DataFrame对象
DataFrame 对象的构建的方法有很多,最常用的是用包含等长的列表或者是NumPy数组的字典创建DataFrame对象。
>>> import pandas as pd>>> from pandas import Series,DataFrame# 建立包含等长列表的字典类型>>> data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}# 建立DataFrame对象>>> frame = DataFrame(data)# DataFrame会自动加上索引,且全部会被有序排列>>> frame pop state year0 1.5 Ohio 20001 1.7 Ohio 20012 3.6 Ohio 20023 2.4 Nevada 20014 2.9 Nevada 2002
在建立DataFrame 对象的过程中,我们可以指定列的顺序:
>>> frame1 = DataFrame(data,columns=['year','state','pop'])>>> frame1 year state pop0 2000 Ohio 1.51 2001 Ohio 1.72 2002 Ohio 3.63 2001 Nevada 2.44 2002 Nevada 2.9>>>
和Series一样,DataFrame对象也可以指定索引内容:
>>> index_1 = ['1st','2nd','3rd','4th','5th']>>> frame2 = DataFrame(data,index=index_1)>>> frame2 pop state year1st 1.5 Ohio 20002nd 1.7 Ohio 20013rd 3.6 Ohio 20024th 2.4 Nevada 20015th 2.9 Nevada 2002
用嵌套字典类型构建DataFrame对象
当由嵌套的字典类型生成DataFrame对象的时候,外部的字典索引会成为列名,内部的字典索引会成为行名。生成的DataFrame对象会根据行索引排序。
>>> pop = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}>>> frame3 = DataFrame(pop)>>> frame3 Nevada Ohio2000 NaN 1.52001 2.4 1.72002 2.9 3.6
除了使用默认的按照行索引排序之外,我们还可以指定行序列:
>>> frame4 = DataFrame(pop,[2000,2001,2002])>>> frame4 Nevada Ohio2000 NaN 1.52001 2.4 1.72002 2.9 3.6
DataFrame 内容访问
获取列数据
从DataFrame对象中获取一列的结果为一个Series,可以通过以下两种方式获取:
方法一:通过字典索引方法获取
>>> frame['state']0 Ohio1 Ohio2 Ohio3 Nevada4 NevadaName: state, dtype: object
方法二:通过属性方式获取
>>> frame.state0 Ohio1 Ohio2 Ohio3 Nevada4 NevadaName: state, dtype: object
获取行数据
可以通过ix获取行数据:
>>> frame2 pop state year1st 1.5 Ohio 20002nd 1.7 Ohio 20013rd 3.6 Ohio 20024th 2.4 Nevada 20015th 2.9 Nevada 2002# 获取frame2中索引为‘1st’的一行数据,也可以写作‘frame2.ix[0]’>>> frame2.ix[['1st']] pop state year1st 1.5 Ohio 2000# 获取frame2中的多行数据>>> frame2.ix[['2nd','3rd','4th']] pop state year2nd 1.7 Ohio 20013rd 3.6 Ohio 20024th 2.4 Nevada 2001# 还可以通过默认数字行索引来获取数据>>> frame2.ix[range(3)] pop state year1st 1.5 Ohio 20002nd 1.7 Ohio 20013rd 3.6 Ohio 2002
获取指定行,指定列的交汇值。先指定列再指定行:
>>> frame1 year state pop0 2000 Ohio 1.51 2001 Ohio 1.72 2002 Ohio 3.63 2001 Nevada 2.44 2002 Nevada 2.9>>> frame['pop'][2]3.6000000000000001>>> frame1['state'][3]'Nevada'
DataFrame 对象的增、删、改
增加一列,并所有赋值为同一个值:
>>> frame1['new-clumns'] = 233>>> frame1 year state pop new-clumns0 2000 Ohio 1.5 2331 2001 Ohio 1.7 2332 2002 Ohio 3.6 2333 2001 Nevada 2.4 2334 2002 Nevada 2.9 233
增加一行,并所有赋值为同一个值:
>>> frame1.ix[5] = 'NaN'>>> frame1 year state pop new-clumns0 2000 Ohio 1.5 2331 2001 Ohio 1.7 2332 2002 Ohio 3.6 2333 2001 Nevada 2.4 2334 2002 Nevada 2.9 2335 NaN NaN NaN NaN
删除DataFrame对象的一列
>>> frame1 year state pop new-clumns0 2000 Ohio 1.5 2331 2001 Ohio 1.7 2332 2002 Ohio 3.6 2333 2001 Nevada 2.4 2334 2002 Nevada 2.9 233# 删除DataFrame对象中'new-clumns'这一列>>> del frame1['new-clumns']# 删除'new-clumns'后的DataFrame对象>>> frame1 year state pop0 2000 Ohio 1.51 2001 Ohio 1.72 2002 Ohio 3.63 2001 Nevada 2.44 2002 Nevada 2.9
更改DataFrame对象的值
>>> import numpy as np>>> frame1['new-clumns'] = np.arange(5)>>> frame1 year state pop new-clumns0 2000 Ohio 1.5 01 2001 Ohio 1.7 12 2002 Ohio 3.6 23 2001 Nevada 2.4 34 2002 Nevada 2.9 4
追加类型为Series的一列:
>>> need = (frame.state == 'Ohio')>>> need0 True1 True2 True3 False4 FalseName: state, dtype: bool>>> frame1['need'] = need>>> frame1 year state pop new-clumns need0 2000 Ohio 1.5 0 True1 2001 Ohio 1.7 1 True2 2002 Ohio 3.6 2 True3 2001 Nevada 2.4 3 False4 2002 Nevada 2.9 4 False
DataFrame 对象的命名
DataFrame 对象的行可以命名,同时多列也可以命名:
>>> frame2 pop state year1st 1.5 Ohio 20002nd 1.7 Ohio 20013rd 3.6 Ohio 20024th 2.4 Nevada 20015th 2.9 Nevada 2002# 对DataFrame对象的行和列分别命名为‘name’和‘index’>>> frame2.columns.name = 'name'>>> frame2.index.name = 'index'# 命名后的DataFrame对象会显示名称>>> frame2name pop state yearindex 1st 1.5 Ohio 20002nd 1.7 Ohio 20013rd 3.6 Ohio 20024th 2.4 Nevada 20015th 2.9 Nevada 2002
阅读全文
0 0
- pandas 数据结构之DataFrame
- Pandas数据结构-DataFrame
- Pandas之DataFrame操作
- Pandas之Dataframe操作
- pandas之DataFrame创建
- Pandas之DataFrame
- [Panads数据分析-02]Pandas数据结构之DataFrame
- Pandas 数据结构(Series,DataFrame)
- Pandas 数据结构Series、DataFrame分析
- python-pandas-Series和DataFrame数据结构构建
- pandas&pandas学习教程&DataFrame与Series数据结构
- 数据结构之--series,DataFrame.use python and pandas for data mining
- 利用pandas进行数据分析之二:DataFrame与Series数据结构对比
- Pandas DataFrame
- Pandas(DataFrame)
- pandas-dataframe
- python 数据处理学习pandas之DataFrame(一)
- python 数据处理学习pandas之DataFrame(二)
- JavaScript 的时间消耗
- ruby的database.yml配置
- 四种常见的 POST 提交数据方式
- python pandas 序列索引
- AP近邻传播聚类算法总结
- pandas 数据结构之DataFrame
- 80后年薪多少,才能摆脱中年危机?
- 龙老师的客服
- 171206之JS字符串操作
- 编程开始之路
- 自定义Toast并只显示最后一次
- MySql开启远程连接
- Mysql之我见二(索引)
- JQuery表单验证(validate):常用例子介绍