很多場景需要通過不同數據類型創建Dataframe
比如
pandas.DataFrame(data=None, index=None, columns=None, dtype=None,
copy=False) data:numpy
ndarray(結構化或同類),dict或DataFrame,Dict可以包含Series,數組,常量或類似列表的對象
index:dataframe的索引,如果沒有自定義,則默認爲RangeIndex(0,1,2,…,n)
columns:dataframe的列標籤,如果沒有自定義,則默認爲RangeIndex(0,1,2,…,n)
dtype:默認None,要強制的數據類型。 只允許一個dtype
那麼
數據怎麼組織呢
按行還是按列生成呢
如何動態生成數據呢?
簡單學習並做些筆記…
列表創建Dataframe
如
d1 = pandas.DataFrame([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
<<<
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
當然可以給各行各列添加索引
設置index 行索引
設置column 列索引
index : Index or array-like
Index to use for resulting frame. Will default to RangeIndex if no indexing information part of input data and no index provided
columns : Index or array-like
Column labels to use for resulting frame. Will default to RangeIndex (0, 1, 2, …, n) if no column labels are provided
data = pandas.DataFrame([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
], columns=['apple','pear','banana'], index=['a','b', 'c'])
frame = pandas.DataFrame(data)
print(frame)
<<<
apple pear banana
a 1 2 3
b 4 5 6
c 7 8 9
字典創建Dataframe
適用於: 以key組織各列數據
比如說數據爲
data = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]}
pandas.DataFrame(Dict)
dict = {key:value, …}
value=[v1, v2,…]
data = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]}
frame = pandas.DataFrame(data)
print(frame)
<<<
col1 col2
0 1 3
1 2 4
2 3 5
3 4 6
當然, 也可以給各行添加索引
可以直接寫在pandas.DataFrame(data, index=)裏面
data = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]}
frame = pandas.DataFrame(data, index=['a','b','c','d'])
print(frame)
<<<
col1 col2
a 1 3
b 2 4
c 3 5
d 4 6
也可以在組織數據的時候添加索引
dict = {key:value, …}
value = {key1:value1,…}
d3 = DataFrame({ 'Smith': {'age': 10, 'sex': '男'}, 'Obama': {'age': 10, 'sex': '男'},
'Trump': {'age': 10, 'sex': '男'}})
<<<
Obama Smith Trump
age 10 10 10
sex 男 男 男
如果需要動態輸入數據的話…
建議使用Series 和 dict
字典創建Dataframe適用於: 以key組織各列數據
List創建Dataframe適用於: 以key組織各行數據
Dict動態創建Dataframe
舉個例子
在組織數據的時候添加索引
dict = {key:value, …}
value = {key1:value1,…}
dict = {}
for i in range(5):
dict[i] = i+10
frame = pandas.DataFrame({'test':dict})
print(frame)
<<<
test
0 10
1 11
2 12
3 13
4 14
List動態創建Dataframe
pandas.DataFrame(List[dict])
dict = {key:value, …}
需要:以列表組織各行數據
dict_list = []
for num in range(2):
dict = {}
for i in range(5):
dict[i] = i + num
dict_list.append(dict)
series = pandas.Series(dict)
frame = pandas.DataFrame(dict_list[0:],index=['fisrt','second'])
print(frame)
<<<
0 1 2 3 4
fisrt 0 1 2 3 4
second 1 2 3 4 5
當然
還有Series數據
方式 pandas.Series(data)
data支持dict list array
我們已經知道了什麼是 Series,在使用 Series 之前,我們得知道如何創建 Series。
import pandas as pd
# 自動創建 index
my_data = [10, 20, 30]
s = pd.Series(data=my_data)
print(s)
# 指定 index
my_index = ['UK', 'US', 'CN']
s = pd.Series(data=my_data, index=my_index)
# 根據字典創建 Series
my_dict = {'UK':10, 'US':20, 'CN':30}
s = pd.Series(data=my_dict)
可以在dataframe中添加一列
datafarme[‘列名’] = series