Series
- series可以看做是一個定長的有序字典,與一維數組形式相同,區別是series的索引可以是任意數據類型。
- series本身擁有一個name屬性,它的index也有自己的name屬性(這條性質爲下文中series傳入DataFrame提供基礎)。
- 傳入:可以傳入一維數組或字典。傳入時,可以修改其索引。
#導入數組
a = np.array([1,2,3,4,5])
series1 = pd.Series(a)
print(series1)
print('*'*20)
#傳入時修改索引
series2 = pd.Series(a,index=(['a','b','c','d','e']))
print(series2)
'''
結果:
0 1
1 2
2 3
3 4
4 5
dtype: int32
********************
a 1
b 2
c 3
d 4
e 5
dtype: int32
'''
傳入字典時,Series中的索引就是原字典的索引。
#傳入字典
dic1 = {"first":1,'second':2,'third':3,'forth':4}
dic_series = pd.Series(dic1)
dic_series
'''
結果:
first 1
forth 4
second 2
third 3
dtype: int64
'''
修改其索引時,若新定義索引在原字典中不存在,則它的值會被賦爲NaN。
dic1 = {"first":1,'second':2,'third':3,'forth':4}
index1 = ['01','second','03','forth']
dic_series = pd.Series(dic1,index=index1)
dic_series
'''
結果:
01 NaN
second 2.0
03 NaN
forth 4.0
dtype: float64
'''
Series索引還可以通過直接賦值的方式進行就地修改。
dic1 = {"first":1,'second':2,'third':3,'forth':4}
dic_series = pd.Series(dic1)
dic_series.index=['01','02','03','04']
dic_series
'''
結果:
01 1
02 4
03 2
04 3
dtype: int64
'''
- series本身擁有一個name屬性,它的index也有自己的name屬性(這條性質爲下文中series傳入DataFrame提供基礎)。
dic1 = {"first":1,'second':2,'third':3,'forth':4}
dic_series = pd.Series(dic1)
dic_series.name = 'letter'
dic_series.index.name = 'number'
dic_series
'''
結果:
number
first 1
forth 4
second 2
third 3
Name: letter, dtype: int64
'''
DataFrame
實質是有索引的字典。
傳入:可以傳入多個列表或多個Series組成的字典傳入,還可傳入字典的字典。
- 用列表傳入時,必須保證列表是等長的。列表外部的索引爲列索引,並且DataFrame會自動補齊行索引。
data = {'first':[1,2,3],
'second':[4,5,6],
'third':[7,8,9]}
frame = pd.DataFrame(data)
frame
結果如下:
- 用series字典傳入時,series原帶的索引爲列索引,series的name屬性爲行索引。
s1 = pd.Series({'one':1,'two':2,'three':3},name='first')
s2 = pd.Series({'one':4,'two':5,'three':6},name='second')
s3 = pd.Series({'one':7,'two':8,'three':9},name='third')
frame = pd.DataFrame([s1,s2,s3])
frame
結果如下:
同理,數組傳入時,外部索引爲列索引,內部索引爲行索引。
dict1 = {"neveda":{2001:2.4,2002:2.9},
"ohio":{2001:1.7,2002:3.6}}
frame = pd.DataFrame(dict1)
frame
結果如下: