DataFrame对象的使用

  • 创建
    • 接收一个字典
    • 接收一个列表
      • 一维列表
      • 字典列表
      • 二维列表
  • 查询
    • 获取某一列的所有记录
    • 获取某一列记录的逻辑索引
    • 根据逻辑索引获取指定的一整条横向记录
    • 获取指定列和行的元素(先列后行)
    • 根据逻辑索引获取指定的列记录
    • 获取前几行记录
    • 获取前几行记录
    • 根据列 降序排序后, 获取前几行记录
    • 根据列 升序排序后, 获取前几行记录
    • 将每一行记录和索引打包成一个元组放入一个迭代器中
  • 修改
    • 新增一行

创建

接收一个字典

In [1]: import pandas as pdIn [2]: dic1 = {"name": ["张三", "李四"], "age": [22, 18], "gender": ["男", "女"]}In [3]: df1 = pd.DataFrame(dic1)In [4]: df1
Out[4]:name  age gender
0   张三   22      男
1   李四   18      女
  • 当接受一个字典作为参数时, 字典的keys会作为表格的列标签, 表格的记录索引index (也就是横标签) 默认从0开始自增, keys对应的values会在相应的列标签下排成一列

  • 字典中至少有一个key对应的value是列表, 并且所有出现的列表都必须是相同长度

    In [5]: dic1_test = {"name": "张三", "age": 22, "gender": "男"}In [6]: df1_test = pd.DataFrame(dic1_test)ValueError: If using all scalar values, you must pass an indexIn [7]: dic1_test2 = {"name": ["张三", "李四"], "age": 22, "gender": ["男"]}In [8]: df1_test2 = pd.DataFrame(dic1_test2)ValueError: arrays must all be same length
    
  • 表格的index(也就是行数)默认是列表的长度, 如果字典的values中没有列表, 则必须人为指定index

    • index 是一个列表类型, 里面存放行标签, 标量的values会被自动重复相应的次数(列表的长度)

      In [10]: df1_test3 = pd.DataFrame(dic1_test, index=["a", 1, [1]])In [11]: df1_test3
      Out[11]:name  age gender
      a     张三   22      男
      1     张三   22      男
      [1]   张三   22      男
      
  • values可以为空列表, 这样的话, 表格为空, 只有列标签, index为[]

    In [12]: dic1_test4 = {"name": "张三", "age": 22, "gender": []}In [13]: df1_test4 = pd.DataFrame(dic1_test4)In [14]: df1_test4
    Out[14]:
    Empty DataFrame
    Columns: [name, age, gender]
    Index: []
    

接收一个列表

一维列表

  • 接收一个一维列表作为参数时, 列标签 和 行标签 都是从0开始自增.
  • 每一个元素作为一条横向记录 (共同组成一个列向量)
In [19]: arr = ["张三", 22, "男"]In [20]: df2 = pd.DataFrame(arr)In [21]: df2
Out[21]:0
0  张三
1  22
2   男

字典列表

  • 当接受的是一个字典的列表时 , 字典的keys默认称为列标签, 依然是数组中的每一个元素作为一条横向记录 (字典)
In [35]: arr4 = [{"name": "张三", "age": 22, "gender": "男"}, {"name": "李雪", "age": 18, "gender": "女"}]In [36]: df5 = pd.DataFrame(arr4)In [37]: df5
Out[37]:name  age gender
0   张三   22      男
1   李雪   18      女
  • 当每个字典的keys不一样时, 会把出现的所有keys作为标签, 字典中缺少该值的默认设置为NaN
In [38]: arr5 = [{"name": "张三", "age": 22, "gender": "男"}, {"name": "李雪", "age": 18, "gen": "女"}]In [39]: df6 = pd.DataFrame(arr5)In [40]: df6
Out[40]:name  age gender  gen
0   张三   22      男  NaN
1   李雪   18    NaN    女

二维列表

  • 当接收二维列表时, 二维列表的大小就是表格的大小, 比如上例中二维列表是23, 最后输出的表格也是23, 二维列表中每一个列表元素作为一条横向记录.
  • 列标签 和 行标签 依然从0开始自增
In [22]: arr2 = [["张三", 22, "男"],["李雪", 18, "女"]]In [23]: df3 = pd.DataFrame(arr2)In [24]: df3
Out[24]:0   1  2
0  张三  22  男
1  李雪  18  女
  • 可以指定列标签 和 行标签 具体是什么
In [28]: df4 = pd.DataFrame(arr2, index=[1,2], columns=["姓名", "年龄", "性别"])In [29]: df4
Out[29]:姓名  年龄 性别
1  张三  22  男
2  李雪  18  女

查询

获取某一列的所有记录

  • 返回值类型 Series
In [64]: df
Out[64]:name  age gender
0   张三   22      男
1   李四   18      女
2   李雪   18      女In [65]: df['name']
Out[65]:
0    张三
1    李四
2    李雪
Name: name, dtype: object

获取某一列记录的逻辑索引

  • 返回值类型 Series
In [66]: df['age'] == 18
Out[66]:
0    False
1     True
2     True
Name: age, dtype: bool

根据逻辑索引获取指定的一整条横向记录

  • 返回值类型 DataFrame
In [67]: df[df['age']==18]
Out[67]:name  age gender
1   李四   18      女
2   李雪   18      女

获取指定列和行的元素(先列后行)

  • 返回值类型 基本类型
In [68]: df['name'][2]
Out[68]: '李雪'

根据逻辑索引获取指定的列记录

  • 返回值类型 Series
In [71]: df['name'][df['age']==18]
Out[71]:
1    李四
2    李雪
Name: name, dtype: object

获取前几行记录

In [78]: df.head(1)
Out[78]:name  age gender
0   张三   22      男In [79]: df.head(2)
Out[79]:name  age gender
0   张三   22      男
1   李四   18      女

获取前几行记录

In [104]: df.tail(2)
Out[104]:name  age gender
2   李雪   18      女
6   田七   19      男

根据列 降序排序后, 获取前几行记录

In [81]: df.nlargest(1,'age')
Out[81]:name  age gender
0   张三   22      男In [82]: df.nlargest(2,'age')
Out[82]:name  age gender
0   张三   22      男
1   李四   18      女

根据列 升序排序后, 获取前几行记录

In [83]: df.nsmallest(2,'age')
Out[83]:name  age gender
1   李四   18      女
2   李雪   18      女In [84]: df.nsmallest(1,'age')
Out[84]:name  age gender
1   李四   18      女

将每一行记录和索引打包成一个元组放入一个迭代器中

In [93]: for item in df.iterrows():...:     print(type(item))...:     print(item)...:
<class 'tuple'>
(0, name      张三
age       22
gender     男
Name: 0, dtype: object)
<class 'tuple'>
(1, name      李四
age       18
gender     女
Name: 1, dtype: object)
<class 'tuple'>
(2, name      李雪
age       18
gender     女
Name: 2, dtype: object)

修改

新增一行

In [100]: df.loc[6] = ["王五", 19, "男"]In [101]: df
Out[101]:name  age gender
0   张三   22      男
1   李四   18      女
2   李雪   18      女
6   王五   19      男

官方文档

[数据处理与分析] Pandas 中的 DataFrame对象相关推荐

  1. python中的iloc函数_详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据

    pandas的DataFrame对象,本质上是二维矩阵,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的名称.这样内部数据抽取既可以用"行列名称(对应.loc[]方法)",也 ...

  2. Python+大数据-数据处理与分析-pandas快速入门

    Python+大数据-数据处理与分析-pandas快速入门 1.Pandas快速入门 1.1DataFrame和Series介绍 1)DataFrame 用来处理结构化数据(SQL数据表,Excel表 ...

  3. pandas中的DataFrame数据结构

    pd.DataFrame() DataFrame 是一种二维的数据模型,相当于EXcel表格中的数据,有横竖两种坐标,横轴用columns,竖轴用index 来确定,在建立DataFrame 对象的时 ...

  4. python列表按照指定顺序排序-pandas中的DataFrame按指定顺序输出所有列的方法

    问题: 输出新建的DataFrame对象时,DataFrame中各列的显示顺序和DataFrame定义中的顺序不一致. 例如: import pandas as pd grades = [48,99, ...

  5. python从2 1 2 2 2 63_Python从零开始第三章数据处理与分析python中的dplyr(2)

    目录 第二章(pandas) Python从零开始第三章数据处理与分析python中的dplyr(2) =============================================== ...

  6. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换

    Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片.相互转换 目录 numpy中的array格式数据切片与pandas中的dataframe ...

  7. pandas 选取第一行_用pandas中的DataFrame时选取行或列的方法

    如下所示: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.ar ...

  8. 问题:使用pandas中的DataFrame写入csv文件多出一行unnamed,如何解决呢??

    问题:使用pandas中的DataFrame写入csv文件多出一行unnamed,如何解决呢?? 参考文章: (1)问题:使用pandas中的DataFrame写入csv文件多出一行unnamed,如 ...

  9. 根据列值删除Pandas中的DataFrame行

    本文翻译自:Deleting DataFrame row in Pandas based on column value I have the following DataFrame: 我有以下Dat ...

最新文章

  1. oracle 字符集 AL32UTF8、UTF8
  2. 08 - JavaSE之IO流
  3. MySQL 遇到的问题
  4. 从2021年多篇顶会论文看OOD泛化新理论、新方法和新讨论
  5. MSP, CMP傻傻分不清楚?一文读懂云管理的春天
  6. Python 爬虫 —— scrapy
  7. 命令查询职责分离模式 CQRS Command Query Responsibility Segregation
  8. 社会工程学之《反欺骗的艺术》小结(三)
  9. Google搜索技巧大全:101个谷歌搜索技巧推荐
  10. FMEA软件之旧版FMEA导入及快速转换为新版FMEA(FMEAHunter)
  11. Unity 模拟鼠标自动点击事件
  12. ipad能不能写python_如何在ipad上写python
  13. 管理学-“三个和尚”
  14. airdrop搜不到对方_如何将AirDrop图标添加到您的macOS Dock
  15. mysql chinanet外网连接不上_笔记本电脑无法连接到ChinaNet无线网络怎么解决?
  16. pythonarp工具_Python 实现ARP扫描欺骗工具
  17. FTP如何设置用户名密码
  18. RTSP协议网络摄像头互联网无插件直播EasyNVR+EasyNVS,如何保持配置地址一致?
  19. 卧槽!GitHub标星7.9K star,抢茅台酒脚本竟然开源了!网友:已抢到,真香!
  20. C++编写一个求x的n次方的函数(其中n为非负整型)

热门文章

  1. 被吐槽我该保持怎样的心态 | 趣闻探讨 |
  2. 你的跳槽涨薪幅度是多少?
  3. php源文件怎么打开,php文件怎么打开?
  4. Python解决线性规划问题
  5. [Stata] 分类变量画直方图(频率分布)
  6. SVN客户端安装及使用说明
  7. 【spring】PO,VO,DAO,BO,POJO,Bean之间的区别与解释
  8. PHP Rewrite (重写)
  9. MyEclipse黑色主题及MyEclipse 2016stable1.0破解教程
  10. c语言的酒店管理系统方案概述