pandas 中有两大 数据结构 Series和 DataFrame。 本文主要介绍DataFrame的用法。DataFrame可以处理 表格数据

Series介绍在 Python数据处理库pandas中的Series数据结构简介​​​​​​

有很多方法可以创建DataFrame 数据, 比如通过字典:

In [1]: import pandas as pdIn [8]: data = {'name': ['张三', '张三', '张三', '李四', '李四', '李四'],...:         'year': [2016, 2017, 2018, 2016, 2017, 2018],...:         'income': [6000, 6500, 7000, 25000, 26000, 29000]}In [9]: frame = pd.DataFrame(data)In [10]: frame
Out[10]: name  year  income
0   张三  2016    6000
1   张三  2017    6500
2   张三  2018    7000
3   李四  2016   25000
4   李四  2017   26000
5   李四  2018   29000

可以通过head方法来选取前5排:

In [11]: frame.head()
Out[11]: name  year  income
0   张三  2016    6000
1   张三  2017    6500
2   张三  2018    7000
3   李四  2016   25000
4   李四  2017   26000

通过指定columns 来对列排序:

In [13]: pd.DataFrame(data, columns=['year', 'income', 'name'])
Out[13]: year  income name
0  2016    6000   张三
1  2017    6500   张三
2  2018    7000   张三
3  2016   25000   李四
4  2017   26000   李四
5  2018   29000   李四

如果在columns中 指定了一个不存在的列, 这不存在的列会用NAN补足:

In [14]: frame2 = pd.DataFrame(data, columns=['income', 'year', 'name', 'gender'],...:                       index=['one', 'two', 'three', 'four', 'five', 'six'])...: In [15]: frame2
Out[15]: income  year name gender
one      6000  2016   张三    NaN
two      6500  2017   张三    NaN
three    7000  2018   张三    NaN
four    25000  2016   李四    NaN
five    26000  2017   李四    NaN
six     29000  2018   李四    NaNIn [17]: frame2.columns
Out[17]: Index(['income', 'year', 'name', 'gender'], dtype='object')

通过列的名称来选取这一列的数据

In [18]: frame2['name']
Out[18]:
one      张三
two      张三
three    张三
four     李四
five     李四
six      李四
Name: name, dtype: objectIn [20]: frame2.income
Out[20]:
one       6000
two       6500
three     7000
four     25000
five     26000
six      29000
Name: income, dtype: int64

通过loc 来选取某一行的数据

In [21]: frame2.loc['six']
Out[21]:
income    29000
year       2018
name         李四
gender      NaN
Name: six, dtype: object

可以对某列数字进行赋值

In [22]: frame2['gender'] = 'male'In [23]: frame2
Out[23]: income  year name gender
one      6000  2016   张三   male
two      6500  2017   张三   male
three    7000  2018   张三   male
four    25000  2016   李四   male
five    26000  2017   李四   male
six     29000  2018   李四   maleIn [24]: frame2['gender'] = ['male', 'male', 'male', 'female', 'female', 'female']In [25]: frame2
Out[25]: income  year name  gender
one      6000  2016   张三    male
two      6500  2017   张三    male
three    7000  2018   张三    male
four    25000  2016   李四  female
five    26000  2017   李四  female
six     29000  2018   李四  female

可以应用series对对应index赋值

In [26]: gender = pd.Series(['male', 'female'], index=['one', 'four'])In [27]: frame2['gender'] = genderIn [28]: frame2
Out[28]: income  year name  gender
one      6000  2016   张三    male
two      6500  2017   张三     NaN
three    7000  2018   张三     NaN
four    25000  2016   李四  female
five    26000  2017   李四     NaN
six     29000  2018   李四     NaN

通过del 删除某列

In [29]: del frame2['gender']In [30]: frame2.columns
Out[30]: Index(['income', 'year', 'name'], dtype='object')

另一种创建dataframe类的方法是通过字典嵌套方法:

In [31]: income = {'张三': {2016: 6000, 2017:6500, 2018:7000},...:           '李四': {2016: 25000, 2017:26000}}In [32]: frame3= pd.DataFrame(income)In [33]: frame3
Out[33]: 张三          李四
2016    6000      25000.0
2017    6500      26000.0
2018    7000          NaN

可以对dataframe转置:

In [34]: frame3.T
Out[34]: 2016     2017    2018
张三   6000.0   6500.0  7000.0
李四  25000.0  26000.0     NaN

对行和列加名字:

In [35]: frame3.index.name = 'year'In [36]: frame3.columns.name = 'name'In [37]: frame3
Out[37]:
name    张三       李四
year
2016  6000  25000.0
2017  6500  26000.0
2018  7000      NaN

应用to_numpy方法 将dataframe转换成二维数组

In [38]: frame3.to_numpy()
Out[38]:
array([[ 6000., 25000.],[ 6500., 26000.],[ 7000.,    nan]])In [39]: frame2.to_numpy()
Out[39]:
array([[6000, 2016, '张三'],[6500, 2017, '张三'],[7000, 2018, '张三'],[25000, 2016, '李四'],[26000, 2017, '李四'],[29000, 2018, '李四']], dtype=object)

参考自: Python for Data Analysis, 2nd Edition by Wes McKinney

Python数据处理库pandas中的DataFrame数据结构简介相关推荐

  1. pandas中的DataFrame数据结构

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

  2. python做数据处理软件_程序员用于机器学习编程的Python 数据处理库 pandas 入门教程...

    入门介绍 pandas适合于许多不同类型的数据,包括: · 具有异构类型列的表格数据,例如SQL表格或Excel数据 · 有序和无序(不一定是固定频率)时间序列数据. · 具有行列标签的任意矩阵数据( ...

  3. python使用教程pandas-Python 数据处理库 pandas 入门教程基本操作

    pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有表现力的数据结 ...

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

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

  5. python怎么选取不连续的列_用pandas中的DataFrame时选取行或列的方法

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

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

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

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

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

  8. 爱因斯坦求和约定在Python扩展库Numpy中的实现

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年12月第 ...

  9. Python 数据处理工具 Pandas(上)

    序列与数据框的构造 外部数据的读取(文本文件读取.电子表格读取.数据库数据读取) 数据类型转换及描述统计 字符与日期数据的处理 数据清洗方法(重复观测处理.缺失值处理.异常值处理) 数据子集的获取 透 ...

最新文章

  1. String 中的hashCode方法
  2. OpenYurt v0.4.0 新特性发布:高效地管理边缘存储资源
  3. javascript标签在页面中的位置探讨
  4. 切分也重要:基于多粒度语言单元切分的BERT模型
  5. 7.1 定义关键指标KPI
  6. 记tcp网络编程中遇到的readline()方法
  7. 模拟电子技术基础第4版笔记和课后习题答案 童诗白
  8. CSS样式div和img居中
  9. python关键词排名批量查排名_李亚涛:python批量查询关键词百度手机与PC排名
  10. pacman 查询_pacman
  11. 深度模型训练之learning rate
  12. 数据中台、业务中台、数据仓库、现有信息架构
  13. python取json数组中的值
  14. 『goodman1999』SD2.0大会:达内创始人韩少云:创业就像买股票
  15. thinkpadt410接口介绍_转:联想ThinkPad T410笔记本DisplayPort接口详解
  16. 一个漂亮的证明与作图:高斯的正十七边形
  17. 美国往事 - 追忆我的房东Dick 最终篇 - 伤感的结局
  18. Qt渲染视频常见问题(视频渲染窗口上子窗口设置透明出现阴影问题、主窗口缩放导致视频渲染窗口部分出现视频闪烁问题)
  19. .Net C# 发送带背景图html邮件(解决Outlook不显示背景图问题)
  20. Vue7 异步加载 懒加载

热门文章

  1. RS422 ABYZ信号与DB9信号的连接
  2. 「模型即服务AI」1分钟调用SOTA人脸检测,同时搭建时光相册小应用
  3. SpringMVC中四种日期格式的转换
  4. 人脸识别+移动考勤,这个组合很厉害
  5. Cisco胖AP配置上网
  6. excel汇总多个工作表怎么做?
  7. CSS静态布局——常规流,定位,浮动。
  8. 十种人不适合做管理者
  9. 抖音seo账号矩阵优化霸屏系统独立源码技术开发搭建
  10. ESP32(MicroPython) LVGL图形界面控制开关与PMW输出