Pandas 基本使用(三) — DataFrame.to_dict() 函数使用!

Pandas 处理数据的基本类型为 DataFrame,数据清洗时不可必然会关系到数据类型转化问题,Pandas 在这方面也做的也非常不错,其中经常用的是 DataFrame.to_dict() 函数之间转化为字典类型;除了转化为字典之外,Pandas 还提供向 jsonhtmllatexcsv等格式的转换:

Snipaste_2020-03-08_23-57-17.jpg

to_dict() 函数基本语法

DataFrame.to_dict (self, orient='dict’, into=) — 官方文档

函数种只需要填写一个参数:orient 即可 ,但对于写入orient的不同,字典的构造方式也不同,官网一共给出了6种,并且其中一种是列表类型:

  • orient =‘dict’,是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值) )}};
  • orient =‘list’ ,转化后的字典形式:{column(列名) :{[ values ](值)}};
  • orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)};
  • orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’ :[columns],’data‘ : [values]};
  • orient =‘records’ ,转化后是 list形式:[{column(列名) : value(值)}…{column:value}];
  • orient =‘index’ ,转化后的字典形式:{index(值) : {column(列名) : value(值)}};

备注:

1,上面中 value 代表数据表中的值,column表示列名,index 表示行名,如下图所示:

Snipaste_2020-03-09_00-16-58.jpg

2,{ }表示字典数据类型,字典中的数据是以 {key : value} 的形式显示,是键名和键值一一对应形成的。

2,关于6种构造方式进行代码实例

六种构造方式所处理 DataFrame 数据是统一的,如下:

>>> import pandas as pd
>>> df =pd.DataFrame({'col_1':[1,2],'col_2':[0.5,0.75]},index =['row1','row2'])
>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
2.1,orient =‘dict’ — {column(列名) : {index(行名) : value(值) )}}

to_dict('list') 时,构造好的字典形式:{第一列的列名:{第一行的行名:value值,第二行行名,value值},…};

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('dict')
{'col_1': {'row1': 1, 'row2': 2}, 'col_2': {'row1': 0.5, 'row2': 0.75}}

orient = 'dict 可以很方面得到 在某一列对应的行名与各值之间的字典数据类型,例如在源数据上面我想得到在col_1这一列行名与各值之间的字典,直接在生成字典查询列名为col_1

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('dict')['col_1']
{'row1': 1, 'row2': 2}
2.2,orient =‘list’ — {column(列名) :{[ values ](值)}};

生成字典中 key为各列名,value为各列对应值的列表

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('list')
{'col_1': [1, 2], 'col_2': [0.5, 0.75]}

orient = 'list' 时,可以很方面得到 在某一列 各值所生成的列表集合,例如我想得到col_2 对应值得列表:

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('list')['col_2']
[0.5, 0.75]
2.3,orient =‘series’ — {column(列名) : Series (values) (值)};

orient ='series'orient = 'list' 唯一区别就是,这里的 valueSeries数据类型,而前者为列表类型

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('series')
{'col_1': row1    1
row2    2
Name: col_1, dtype: int64, 'col_2': row1    0.50
row2    0.75
Name: col_2, dtype: float64}
2.4,orient =‘split’ — {‘index’ : [index],‘columns’ :[columns],’data‘ : [values]};

orient ='split' 得到三个键值对,列名、行名、值各一个,value统一都是列表形式;

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('split')
{'index': ['row1', 'row2'], 'columns': ['col_1', 'col_2'], 'data': [[1, 0.5], [2, 0.75]]}

orient = 'split' 可以很方面得到 DataFrame数据表 中全部 列名或者行名 的列表形式,例如我想得到全部列名:

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('split')['columns']
['col_1', 'col_2']
2.5,orient =‘records’ — [{column:value(值)},{column:value}…{column:value}];

注意的是,orient ='records' 返回的数据类型不是 dict ; 而是list 列表形式,由全部列名与每一行的值形成一一对应的映射关系:

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('records')
[{'col_1': 1, 'col_2': 0.5}, {'col_1': 2, 'col_2': 0.75}]

这个构造方式的好处就是,很容易得到 列名与某一行值形成得字典数据;例如我想要第2行{column:value}得数据:

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('records')[1]
{'col_1': 2, 'col_2': 0.75}
2.6,orient =‘index’ — {index:{culumn:value}};

orient ='index'2.1用法刚好相反,求某一行中列名与值之间一一对应关系(查询效果与2.5相似):

>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('index')
{'row1': {'col_1': 1, 'col_2': 0.5}, 'row2': {'col_1': 2, 'col_2': 0.75}}

#查询行名为 row2 列名与值一一对应字典数据类型
>>> df.to_dict('index')['row2']
{'col_1': 2, 'col_2': 0.75}

3,to_dict() 函数其它用法

在部分 2 只展示了这个函数的一部分功能,还有其他用法,例如可以快速索引第几行第几列的值(pandas内置索引函数),例如我想要第二行第二列的值,可以这样操作:

#to_dict 版本的:
>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> dict_1 = df.to_dict('index')
>>> dict_2 = dict_1[list(dict_1.keys()[1])]
>>> dict_2[list(dict_2.keys())[1]]
0.75


# pandas自带的
>>> df
      col_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.iloc[1,1]
0.75

相对会麻烦点,但重要的是整个实现过程;最后,感谢阅读!

  • 25
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: pd.DataFrame.from_dict用于将字典转换为数据框,其中字典的键将成为数据框的列名,字典的值将成为数据框的值。可以使用参数orient来指定数据框的方向,有两个可选值,即"columns"(默认值)和"index",分别表示将字典的键用作列名或行名。此外,还可以使用参数dtype来指定数据类型。使用方法示例如下: ``` import pandas as pd data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'city': ['Beijing', 'Shanghai', 'Guangzhou']} df = pd.DataFrame.from_dict(data, orient='columns', dtype=None) print(df) ``` 输出结果为: ``` name age city 0 Alice 25 Beijing 1 Bob 30 Shanghai 2 Charlie 35 Guangzhou ``` ### 回答2: pd.DataFrame.from_dictPandas库中的一个函数,用于将字典数据转换为数据框(DataFrame)。 使用这个函数可以方便地将字典中的数据转换为数据框的形式,方便对数据进行分析和处理。它的常用参数有两个: 1. data:要转换的字典数据。字典的key将成为数据框的列名,value将成为对应列的数据。 2. orient:数据的排列方式,默认为'columns',表示以列的方式排列数据。也可以选择'index',表示以行的方式排列数据。 例如,假设有以下字典数据: ```python data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} ``` 我们可以使用以下代码将字典数据转换为数据框: ```python import pandas as pd df = pd.DataFrame.from_dict(data) ``` 转换后的数据框df如下所示: ``` A B C 0 1 4 7 1 2 5 8 2 3 6 9 ``` 可以看到,字典中的key变成了数据框的列名,而value变成了对应列的数据。 需要注意的是,当字典中的数据长度不一致时,转换后的数据框会自动填充缺失值(NaN)。 通过pd.DataFrame.from_dict函数,我们可以方便地将字典数据转换成数据框,为后续的数据分析和处理提供了更加灵活和方便的操作。 ### 回答3: `pd.DataFrame.from_dict`是Pandas库中的一个函数,用于将Python字典对象转换为数据帧(DataFrame)对象。 该函数的语法如下: ```python pd.DataFrame.from_dict(data, orient='columns', dtype=None) ``` 参数说明: - `data`:要转换的字典对象。 - `orient`:数据的排列方式,默认为'columns',表示将字典的键作为列名,字典的值作为列值;当设置为'index'时,表示将字典的键作为行索引,字典的值作为行值。 - `dtype`:指定数据类型,可以是一个数据类型的字典,也可以是一个数据类型。 `pd.DataFrame.from_dict`函数可以接受多种形式的字典对象作为输入,包括嵌套字典、列表字典和普通字典。 以下是几个使用`pd.DataFrame.from_dict`函数的示例: 1. 通过字典创建数据帧: ```python data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame.from_dict(data) print(df) ``` 输出: ``` A B C 0 1 4 7 1 2 5 8 2 3 6 9 ``` 2. 通过字典列表创建数据帧: ```python data = [{'A': 1, 'B': 4}, {'A': 2, 'B': 5}, {'A': 3, 'B': 6}] df = pd.DataFrame.from_dict(data) print(df) ``` 输出: ``` A B 0 1 4 1 2 5 2 3 6 ``` 3. 通过字典列表创建索引为行的数据帧: ```python data = [{'A': 1, 'B': 4}, {'A': 2, 'B': 5}, {'A': 3, 'B': 6}] df = pd.DataFrame.from_dict(data, orient='index') print(df) ``` 输出: ``` A B 0 1 4 1 2 5 2 3 6 ``` 通过`pd.DataFrame.from_dict`函数,我们可以方便地将字典对象转换为数据帧对象,从而进行各种数据分析和处理操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大飞1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值