pandas to_dict 的用法
簡介: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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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'}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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']}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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]}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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'}]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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'}}
————————————————
版權聲明:本文為CSDN博主「積跬步___至千里」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/m0_37804518/article/details/78444110
總結
以上是生活随笔為你收集整理的pandas to_dict 的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加里森敢死队(说一说加里森敢死队的简介)
- 下一篇: 海口美兰机场租车(海口火车东站到美兰机场