对pandas中to_dict的用法详解


Posted in Python onJune 05, 2018

简介:pandas 中的to_dict 可以对DataFrame类型的数据进行转换

可以选择六种的转换类型,分别对应于参数 ‘dict', ‘list', ‘series', ‘split', ‘records', ‘index',下面逐一介绍每种的用法

Help on method to_dict in module pandas.core.frame:
to_dict(orient='dict') method of pandas.core.frame.DataFrame instance
 Convert DataFrame to dictionary.
 Parameters
 ----------
 orient : str {'dict', 'list', 'series', 'split', 'records', 'index'}
 Determines the type of the values of the dictionary.
 - dict (default) : dict like {column -> {index -> value}}
 - list : dict like {column -> [values]}
 - series : dict like {column -> Series(values)}
 - split : dict like
  {index -> [index], columns -> [columns], data -> [values]}
 - records : list like
  [{column -> value}, ... , {column -> value}]
 - index : dict like {index -> {column -> value}}
  .. versionadded:: 0.17.0
 Abbreviations are allowed. `s` indicates `series` and `sp`
 indicates `split`.
 Returns
 -------
 result : dict like {column -> {index -> value}}

1、选择参数orient='dict'

dict也是默认的参数,下面的data数据类型为DataFrame结构, 会形成 {column -> {index -> value}}这样的结构的字典,可以看成是一种双重字典结构

- 单独提取每列的值及其索引,然后组合成一个字典

- 再将上述的列属性作为关键字(key),值(values)为上述的字典

查询方式为 :data_dict[key1][key2]

- data_dict 为参数选择orient='dict'时的数据名

- key1 为列属性的键值(外层)

- key2 为内层字典对应的键值

data 
Out[9]: 
 pclass age embarked   home.dest sex
1086 3rd 31.194181 UNKNOWN   UNKNOWN male
12 1st 31.194181 Cherbourg   Paris, France female
1036 3rd 31.194181 UNKNOWN   UNKNOWN male
833 3rd 32.000000 Southampton Foresvik, Norway Portland, ND male
1108 3rd 31.194181 UNKNOWN   UNKNOWN male
562 2nd 41.000000 Cherbourg   New York, NY male
437 2nd 48.000000 Southampton Somerset / Bernardsville, NJ female
663 3rd 26.000000 Southampton   UNKNOWN male
669 3rd 19.000000 Southampton   England male
507 2nd 31.194181 Southampton  Petworth, Sussex male
In[10]: data_dict=data.to_dict(orient= 'dict')
In[11]: data_dict
Out[11]: 
{'age': {12: 31.19418104265403,
 437: 48.0,
 507: 31.19418104265403,
 562: 41.0,
 663: 26.0,
 669: 19.0,
 833: 32.0,
 1036: 31.19418104265403,
 1086: 31.19418104265403,
 1108: 31.19418104265403},
 'embarked': {12: 'Cherbourg',
 437: 'Southampton',
 507: 'Southampton',
 562: 'Cherbourg',
 663: 'Southampton',
 669: 'Southampton',
 833: 'Southampton',
 1036: 'UNKNOWN',
 1086: 'UNKNOWN',
 1108: 'UNKNOWN'},
 'home.dest': {12: 'Paris, France',
 437: 'Somerset / Bernardsville, NJ',
 507: 'Petworth, Sussex',
 562: 'New York, NY',
 663: 'UNKNOWN',
 669: 'England',
 833: 'Foresvik, Norway Portland, ND',
 1036: 'UNKNOWN',
 1086: 'UNKNOWN',
 1108: 'UNKNOWN'},
 'pclass': {12: '1st',
 437: '2nd',
 507: '2nd',
 562: '2nd',
 663: '3rd',
 669: '3rd',
 833: '3rd',
 1036: '3rd',
 1086: '3rd',
 1108: '3rd'},
 'sex': {12: 'female',
 437: 'female',
 507: 'male',
 562: 'male',
 663: 'male',
 669: 'male',
 833: 'male',
 1036: 'male',
 1086: 'male',
 1108: 'male'}}

2、当关键字orient=' list' 时

和1中比较相似,只不过内层变成了一个列表,结构为{column -> [values]}

查询方式为: data_list[keys][index]

data_list 为关键字orient='list' 时对应的数据名

keys 为列属性的键值,如本例中的'age' , ‘embarked'等

index 为整型索引,从0开始到最后

In[19]: data_list=data.to_dict(orient='list')
In[20]: data_list
Out[20]: 
{'age': [31.19418104265403,
 31.19418104265403,
 31.19418104265403,
 32.0,
 31.19418104265403,
 41.0,
 48.0,
 26.0,
 19.0,
 31.19418104265403],
 'embarked': ['UNKNOWN',
 'Cherbourg',
 'UNKNOWN',
 'Southampton',
 'UNKNOWN',
 'Cherbourg',
 'Southampton',
 'Southampton',
 'Southampton',
 'Southampton'],
 'home.dest': ['UNKNOWN',
 'Paris, France',
 'UNKNOWN',
 'Foresvik, Norway Portland, ND',
 'UNKNOWN',
 'New York, NY',
 'Somerset / Bernardsville, NJ',
 'UNKNOWN',
 'England',
 'Petworth, Sussex'],
 'pclass': ['3rd',
 '1st',
 '3rd',
 '3rd',
 '3rd',
 '2nd',
 '2nd',
 '3rd',
 '3rd',
 '2nd'],
 'sex': ['male',
 'female',
 'male',
 'male',
 'male',
 'male',
 'female',
 'male',
 'male',
 'male']}

3、关键字参数orient='series'

形成结构{column -> Series(values)}

调用格式为:data_series[key1][key2]或data_dict[key1]

data_series 为数据对应的名字

key1 为列属性的键值,如本例中的'age' , ‘embarked'等

key2 使用数据原始的索引(可选)

In[21]: data_series=data.to_dict(orient='series')
In[22]: data_series
Out[22]: 
{'age': 1086 31.194181
 12 31.194181
 1036 31.194181
 833 32.000000
 1108 31.194181
 562 41.000000
 437 48.000000
 663 26.000000
 669 19.000000
 507 31.194181
 Name: age, dtype: float64, 'embarked': 1086 UNKNOWN
 12 Cherbourg
 1036 UNKNOWN
 833 Southampton
 1108 UNKNOWN
 562 Cherbourg
 437 Southampton
 663 Southampton
 669 Southampton
 507 Southampton
 Name: embarked, dtype: object, 'home.dest': 1086    UNKNOWN
 12   Paris, France
 1036    UNKNOWN
 833 Foresvik, Norway Portland, ND
 1108    UNKNOWN
 562   New York, NY
 437 Somerset / Bernardsville, NJ
 663    UNKNOWN
 669    England
 507   Petworth, Sussex
 Name: home.dest, dtype: object, 'pclass': 1086 3rd
 12 1st
 1036 3rd
 833 3rd
 1108 3rd
 562 2nd
 437 2nd
 663 3rd
 669 3rd
 507 2nd
 Name: pclass, dtype: object, 'sex': 1086 male
 12 female
 1036 male
 833 male
 1108 male
 562 male
 437 female
 663 male
 669 male
 507 male
 Name: sex, dtype: object}

4、关键字参数orient='split'

形成{index -> [index], columns -> [columns], data -> [values]}的结构,是将数据、索引、属性名单独脱离出来构成字典

调用方式有 data_split[‘index'],data_split[‘data'],data_split[‘columns']

data_split=data.to_dict(orient='split')
data_split
Out[38]: 
{'columns': ['pclass', 'age', 'embarked', 'home.dest', 'sex'],
 'data': [['3rd', 31.19418104265403, 'UNKNOWN', 'UNKNOWN', 'male'],
 ['1st', 31.19418104265403, 'Cherbourg', 'Paris, France', 'female'],
 ['3rd', 31.19418104265403, 'UNKNOWN', 'UNKNOWN', 'male'],
 ['3rd', 32.0, 'Southampton', 'Foresvik, Norway Portland, ND', 'male'],
 ['3rd', 31.19418104265403, 'UNKNOWN', 'UNKNOWN', 'male'],
 ['2nd', 41.0, 'Cherbourg', 'New York, NY', 'male'],
 ['2nd', 48.0, 'Southampton', 'Somerset / Bernardsville, NJ', 'female'],
 ['3rd', 26.0, 'Southampton', 'UNKNOWN', 'male'],
 ['3rd', 19.0, 'Southampton', 'England', 'male'],
 ['2nd', 31.19418104265403, 'Southampton', 'Petworth, Sussex', 'male']],
 'index': [1086, 12, 1036, 833, 1108, 562, 437, 663, 669, 507]}

5、当关键字orient='records' 时

形成[{column -> value}, … , {column -> value}]的结构

整体构成一个列表,内层是将原始数据的每行提取出来形成字典

调用格式为data_records[index][key1]

data_records=data.to_dict(orient='records')
data_records
Out[41]: 
[{'age': 31.19418104265403,
 'embarked': 'UNKNOWN',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'},
 {'age': 31.19418104265403,
 'embarked': 'Cherbourg',
 'home.dest': 'Paris, France',
 'pclass': '1st',
 'sex': 'female'},
 {'age': 31.19418104265403,
 'embarked': 'UNKNOWN',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'},
 {'age': 32.0,
 'embarked': 'Southampton',
 'home.dest': 'Foresvik, Norway Portland, ND',
 'pclass': '3rd',
 'sex': 'male'},
 {'age': 31.19418104265403,
 'embarked': 'UNKNOWN',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'},
 {'age': 41.0,
 'embarked': 'Cherbourg',
 'home.dest': 'New York, NY',
 'pclass': '2nd',
 'sex': 'male'},
 {'age': 48.0,
 'embarked': 'Southampton',
 'home.dest': 'Somerset / Bernardsville, NJ',
 'pclass': '2nd',
 'sex': 'female'},
 {'age': 26.0,
 'embarked': 'Southampton',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'},
 {'age': 19.0,
 'embarked': 'Southampton',
 'home.dest': 'England',
 'pclass': '3rd',
 'sex': 'male'},
 {'age': 31.19418104265403,
 'embarked': 'Southampton',
 'home.dest': 'Petworth, Sussex',
 'pclass': '2nd',
 'sex': 'male'}]

6、当关键字orient='index' 时

形成{index -> {column -> value}}的结构,调用格式正好和'dict' 对应的反过来,请读者自己思考

data_index=data.to_dict(orient='index')
data_index
Out[43]: 
{12: {'age': 31.19418104265403,
 'embarked': 'Cherbourg',
 'home.dest': 'Paris, France',
 'pclass': '1st',
 'sex': 'female'},
 437: {'age': 48.0,
 'embarked': 'Southampton',
 'home.dest': 'Somerset / Bernardsville, NJ',
 'pclass': '2nd',
 'sex': 'female'},
 507: {'age': 31.19418104265403,
 'embarked': 'Southampton',
 'home.dest': 'Petworth, Sussex',
 'pclass': '2nd',
 'sex': 'male'},
 562: {'age': 41.0,
 'embarked': 'Cherbourg',
 'home.dest': 'New York, NY',
 'pclass': '2nd',
 'sex': 'male'},
 663: {'age': 26.0,
 'embarked': 'Southampton',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'},
 669: {'age': 19.0,
 'embarked': 'Southampton',
 'home.dest': 'England',
 'pclass': '3rd',
 'sex': 'male'},
 833: {'age': 32.0,
 'embarked': 'Southampton',
 'home.dest': 'Foresvik, Norway Portland, ND',
 'pclass': '3rd',
 'sex': 'male'},
 1036: {'age': 31.19418104265403,
 'embarked': 'UNKNOWN',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'},
 1086: {'age': 31.19418104265403,
 'embarked': 'UNKNOWN',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'},
 1108: {'age': 31.19418104265403,
 'embarked': 'UNKNOWN',
 'home.dest': 'UNKNOWN',
 'pclass': '3rd',
 'sex': 'male'}}

以上这篇对pandas中to_dict的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
在Python中如何使用yield
Jun 07 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 #Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 #Python
Python实现迭代时使用索引的方法示例
Jun 05 #Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 #Python
django反向解析和正向解析的方式
Jun 05 #Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 #Python
Python实现字典(dict)的迭代操作示例
Jun 05 #Python
You might like
php Mysql日期和时间函数集合
2007/11/16 PHP
php去除重复字的实现代码
2011/09/16 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
python实现flappy bird游戏
2018/12/24 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
Python PIL库图片灰化处理
2020/04/07 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
中学教师自我鉴定
2014/02/07 职场文书
干部作风建设心得体会
2014/10/22 职场文书
生产设备维护保养制度
2015/08/06 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python