一起学习,一起成长

1. 什么是DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由series组成的字典(共用同一个索引)

2. DateFrame特点

DataFrame中面向行和面向列的操作基本是平衡的。

DataFrame中的数据是以一个或多个两维块存放的(而不是列表、字典或别的一维数据结构)。

3. 创建DataFrame

最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:

In [33]: data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}

In [34]: frame=DataFrame(data)

#结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序排列:

In [35]: frame

Out[35]:

pop state year

0 1.5 Ohio 2000

1 1.7 Ohio 2001

2 3.6 Ohio 2002

3 2.4 Nevada 2001

4 2.9 Nevada 2002

4. 指定列顺序

#使用clolumns指定列顺序

In [36]: DataFrame(data,columns=['year','state','pop'])

Out[36]:

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

5. NA值

跟Series一样,如果传入的列在数据中找不到,就会产生NA值:

In [37]: DataFrame(data,columns=['year','state','pop','debt'],index=['one','two','three','four','five'])

Out[37]:

year state pop debt

one 2000 Ohio 1.5 NaN

two 2001 Ohio 1.7 NaN

three 2002 Ohio 3.6 NaN

four 2001 Nevada 2.4 NaN

five 2002 Nevada 2.9 NaN

6. 类似字典(或属性)标记

通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:

In [39]: frame['state'] #或frame.state

Out[39]:

0 Ohio

1 Ohio

2 Ohio

3 Nevada

4 Nevada

Name: state, dtype: object

7. 索引字段ix(行)

注意,返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应地设置好了。行也可以通过位置或名称的方式进行获取,比如用索引字段ix:

In [44]: frame2.ix['one']

Out[44]:

year 2000

state Ohio

pop 1.5

debt NaN

Name: one, dtype: object

8. 通过赋值修改列

列可以通过赋值的方式进行修改。例如,可以给那个空的‘debt’列赋上一个标量值或一组值:

In [45]: frame2['debt']=16.5 #或frame2.debt

In [46]: frame2

Out[46]:

year state pop debt

one 2000 Ohio 1.5 16.5

two 2001 Ohio 1.7 16.5

three 2002 Ohio 3.6 16.5

four 2001 Nevada 2.4 16.5

five 2002 Nevada 2.9 16.5

In [50]: frame2.debt=np.arange(5.)

In [51]: frame2

Out[51]:

year state pop debt

one 2000 Ohio 1.5 0.0

two 2001 Ohio 1.7 1.0

three 2002 Ohio 3.6 2.0

four 2001 Nevada 2.4 3.0

five 2002 Nevada 2.9 4.0

将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值:

In [52]: val=Series([-1.2,-1.5,-1.7],index=['two','four','five'])

In [53]: frame2['debt']=val

In [54]: frame2

Out[54]:

year state pop debt

one 2000 Ohio 1.5 NaN

two 2001 Ohio 1.7 -1.2

three 2002 Ohio 3.6 NaN

four 2001 Nevada 2.4 -1.5

five 2002 Nevada 2.9 -1.7

9. 关键字del删除列

为不存在的列赋值会创建出一个新列。关键字del用于删除列:

In [55]: frame2['eastern']=frame2.state=='Ohio'

In [56]: frame2

Out[56]:

year state pop debt eastern

one 2000 Ohio 1.5 NaN True

two 2001 Ohio 1.7 -1.2 True

three 2002 Ohio 3.6 NaN True

four 2001 Nevada 2.4 -1.5 False

five 2002 Nevada 2.9 -1.7 False

In [57]: del frame2['eastern']

In [58]: frame2.columns

Out[58]: Index(['year', 'state', 'pop', 'debt'], dtype='object')

警告:通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何就地修改全都会反映到源DataFrame上。通过Series的copy方法即可显示地赋值列。

10. 嵌套字典

嵌套字典(也就是字典的字典):

In [62]: pop={'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:17,2002:3.6}}

#如果将它传给DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引:

In [63]: frame3=DataFrame(pop)

In [64]: frame3

Out[64]:

Nevada Ohio

2000 NaN 1.5

2001 2.4 17.0

2002 2.9 3.6

内层字典的键会被合并、排序以形成最终的索引。如果显式指定了索引,则不会这样:

In [66]: DataFrame(pop,index=[2001,2002,2003])

Out[66]:

Nevada Ohio

2001 2.4 17.0

2002 2.9 3.6

2003 NaN NaN

由Series组成的字典差不多也是一样的用法:

In [68]: pdata={'Ohio':frame3['Ohio'][:-1],'Nevada':frame3['Nevada'][:2]}

In [69]: DataFrame(pdata)

Out[69]:

Nevada Ohio

2000 NaN 1.5

2001 2.4 17.0

11. 转置

In [65]: frame3.T

Out[65]:

2000 2001 2002

Nevada NaN 2.4 2.9

Ohio 1.5 17.0 3.6

12.索引对象

Pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。

Index对象是不可修改的(immutable),因此用户不能对其进行修改。

不可修改性非常重要,因为这样才能使Index对象在多个数据结构之间安全共享。

注意:虽然大部分用户都不需要知道太多关于Index对象的细节,但它们确实是pandas数据模型的重要组成部分。

「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

python dataframe是什么_什么是Pandas的DataFrame?相关推荐

  1. pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序

    pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录

  2. python科学计算笔记(九)pandas中DataFrame数据操作函数

    Python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...

  3. dataframe修改数据_数据处理进阶pandas入门(一)

    前言 NumPy作为数据处理的利器,在对数据进行科学计算.存储处理大型矩阵等方面为我们带来了极大的方便,但对于更进一步的数据分析任务,文件操作等方面显得有些吃力.于是,作为NumPy的进阶库panda ...

  4. Python的数据科学函数包(二)——pandas(series dataframe)(loc iloc ix)(csv文件)

    pandas 1.pandas数据的存储相对来说比较简单,它就只有两种非常重要的数据类型,一种叫series,一种叫dataframe series是指那些一维的数据,dataframe是指那些二维的 ...

  5. dataframe 空值替换为0_缓解Pandas中DataFrame占用内存过高

    0 背景 在我们使用pandas进行数据处理的时候,有时候发现文件在本地明明不大,但是用pandas以DataFrame形式加载内存中的时候会占用非常高的内存,本文即解决这样的问题. 1 原因 如果是 ...

  6. python dataframe loc函数_详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)...

    在操作DataFrame时,肯定会经常用到loc,iloc,at等函数,各个函数看起来差不多,但是还是有很多区别的,我们一起来看下吧. 首先,还是列出一个我们用的DataFrame,注意index一列 ...

  7. python dataframe取行_如何获取pandas DataFrame的最后N行?

    我有pandas数据帧df1和df2(df1是vanila数据帧,df2由'STK_ID'&'RPT_Date'索引): >>> df1 STK_ID RPT_Date TC ...

  8. python的loc函数_如何在pandas中使用loc、iloc函数进行数据索引(入门篇)

    在数据分析过程中,很多时候我们需要从数据表中提取出我们需要的部分,而这么做的前提是我们需要先索引出这一部分数据.今天我们就来探索一下,如何在pandas中使用loc函数和iloc函数索引数据. 今天我 ...

  9. python怎么汇总数据_如何在Pandas Python中汇总数据?

    通过使用数据上的不同功能,可以获得有关数据的大量信息.但是,如果我们希望获得有关数据的所有信息,则可以使用"描述"功能. 此函数将提供诸如"计数"," ...

最新文章

  1. 有意思的。带情感的语音转换,可以下载!
  2. python建立回归模型_简单线性回归的Python建模方法
  3. 网站“注册流程”如何“照顾用户”?
  4. 【今日CV 视觉论文速览】Fri, 15 Feb 2019
  5. suse安装mysql_SuSE12安装MySQL5.7.22:编译安装方式、单实例
  6. Interesting Finds: 2007.12.19
  7. 跳表 skipList
  8. 无线通信设备安装工程概预算编制_深圳电气工程造价培训-电气设备安装工程造价入门级知识学习...
  9. 怎样在计算机上登录qq音乐,如何使用手机控制电脑qq音乐播放
  10. python与CAD——磨平了棱角的多边形
  11. echarts图表 tooltip提示框,xAxis X轴,formatter自定义
  12. 初识SRC漏洞平台提交漏洞
  13. 使用Git管理多媒体文件
  14. sip协议之网络传输方式
  15. RS485通信和Modbus协议
  16. IE浏览器:注定消亡?
  17. faiss search(检索)截断
  18. 2010年4月12日星期一
  19. VB编程:利用循环嵌套求1000以内的完数-18
  20. DCHP 中继,攻击防范配置

热门文章

  1. 酒店评论数据分析和挖掘-展现数据分析全流程(一)报告展示篇
  2. visual svn for visual studio 2019
  3. 大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署
  4. 免费在线!!!多PDF合成一个PDF
  5. BackTrack5 学习笔记5 扫描 Nmap
  6. 在Linux(BackTrack5)下安装卡无线网
  7. Linux如何新建用户
  8. 一个简单的马尔可夫过程例子
  9. 中标麒麟mysql 安装_在中标麒麟上安装达梦数据库V8
  10. 高速刹车失灵,特斯拉回应女子坐车顶维权