Pandas DataFrame構造簡析
阿新 • • 發佈:2017-12-25
基本類 1.0 image ... data 值類型 bsp pandas sse
參考書籍:《利用Python進行數據分析》
DataFrame簡介:
DataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)。跟其他類似的數據結構相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其實,DataFrame中的數據是以一個或多個二維塊存放的(而不是列表、字典或別的一維數據結構)。
導入python庫:
import numpy as np import pandas as pd
DataFrame構造:
1:直接傳入一個由等長列表或NumPy數組組成的字典;
dict = { "key1": value1; "key2": value2; "key3": value3; }
註意:key 會被解析為列數據,value 會被解析為行數據。
>>> data = { ... ‘state‘: [‘Ohio‘, ‘Ohio‘, ‘Ohio‘, ‘Nevada‘, ‘Nevada‘], ... ‘year‘: [2000, 2001, 2002, 2001, 2002], ... ‘pop‘: [1.5, 1.7, 3.6, 2.4, 2.9] ... }>>> pd.DataFrame(data) pop state year 0 1.5 Ohio 2000 1 1.7 Ohio 2001 2 3.6 Ohio 2002 3 2.4 Nevada 2001 4 2.9 Nevada 2002
主動指定列排序方式:
>>> pd.DataFrame(data, columns=[‘year‘, ‘state‘, ‘pop‘]) year state pop 0 2000 Ohio 1.5 1 2001 Ohio 1.7 2 2002 Ohio 3.6 3 2001 Nevada 2.4 4 2002 Nevada 2.9
此處 0-1位自動生成的列索引,當然了也可以主動指定。
>>> pd.DataFrame(data, columns=[‘year‘, ‘state‘, ‘pop‘], index=[‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘five‘]) year state pop one 2000 Ohio 1.5 two 2001 Ohio 1.7 three 2002 Ohio 3.6 four 2001 Nevada 2.4 five 2002 Nevada 2.9
需要註意的是:將列表或數組賦值給某個列時,其長度必須跟DataFrame的長度相匹配!!否則會報ValueError。
>>> pd.DataFrame(data, columns=[‘year‘, ‘state‘, ‘pop‘], index=[‘one‘, ‘two‘, ‘three‘, ‘four‘])
ValueError: Shape of passed values is (3, 5), indices imply (3, 4)
2:傳入一個由嵌套的字典;
它就會被解釋為:外層字典的鍵作為列,內層鍵則作為行索引。
>>> dict = { ... "key1": { ... "subkey1": 1, ... "subkey2": 2, ... "subkey3": 3, ... }, ... "key2": { ... "subkey1": 4, ... "subkey2": 5, ... "subkey3": 6, ... }, ... "key3": { ... "subkey1": 7, ... "subkey2": 8, ... "subkey3": 9, ... }, ... }
>>> pd.DataFrame(dict) key1 key2 key3 subkey1 1 4 7 subkey2 2 5 8 subkey3 3 6 9
請務必保證嵌套字典的key的一致性,不然的話,數據會異常,但不會顯式的報錯,而是顯示出NaN,
>>> dict = { ... "key1": { ... "subkey1111111111111111": 1, ... "subkey2": 2, ... "subkey3": 3, ... }, ... "key2": { ... "subkey1": 4, ... "subkey2": 5, ... "subkey3": 6, ... }, ... "key3": { ... "subkey1": 7, ... "subkey2": 8, ... "subkey3": 9, ... }, ... } >>> pd.DataFrame(dict) key1 key2 key3 subkey1 NaN 4.0 7.0 subkey1111111111111111 1.0 NaN NaN subkey2 2.0 5.0 8.0 subkey3 3.0 6.0 9.0
3:傳入一個二維nd.array;
>>> s = [[1,2],[3,4]]
>>> np.array(s)
array([[1, 2],
[3, 4]])
>>> pd.DataFrame(np.array(s))
0 1 0 1 2 1 3 4
當然了你也可以主動指定行和列索引(不贅述):
>>> pd.DataFrame(np.array(s),index=[‘one‘, ‘two‘], columns=[‘year‘, ‘state‘]) year state one 1 2 two 3 4
4:傳入其他的數據(初始化方式基本類似);
Pandas DataFrame構造簡析