pandas動態創建Dataframe的幾種方式

很多場景需要通過不同數據類型創建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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章