iT邦幫忙

2

【python 大數據模組學習】簡潔地創建隨機Dataframe供練習

python中的pandas是好用的大數據處理工具,
pandas中有個相當好用的資料結構為dataFrame,
DataFrame則可以處理雙維度或多欄位的資料,
類似Excel的表格(Table),具有資料索引(列)及欄位標題(欄)

一開始在學習這個模組時,可能會需要一個Dataframe,
供練習pandas的各種函式庫的使用,
然而若是手動刻一個Dataframe出來是非常費工的

手動填資料創建一個Dataframe的方法,
範例如下(資料可隨意填):

import pandas as pd
datas = {"學號":[123,456,789],
          "成績":[80,55,75]}
df = pd.DataFrame.from_dict(datas)
print(df)

得到結果:

    學號  成績
0  123  80
1  456  55
2  789  75

但是手動寫資料造出一個dataframe是非常麻煩的,
大概填了幾個就懶的填了

因此我們要教用簡潔的程式碼,隨機生成一個數字型別的dataframe

np.random.randint: 隨機數字矩陣

python中的numpy亦為好用的大數據處理工具,
可以支援複雜的矩陣運算

numpy中創建隨機陣列、矩陣的語法為:

random.randint(low, high, size)

可以回傳一個大小為size, 範圍介於low(包含)~high(不包含)的矩陣

試著寫寫看就知道了,範例:

import numpy as np
mat = np.random.randint(-10,10,size=(5, 4))
print(mat)

結果(一個範圍介於-10~10(不包含)的隨機矩陣,每次執行結果可能不同):

[[ -2  -4   1   3]
 [ -6   5   7   9]
 [ -4  -2 -10 -10]
 [ -7   7  -6  -9]
 [ -2  -2  -3  -6]]

隨機生成一張數字型別的Dataframe

有了這個概念,要隨機生成一張數字型別的Dataframe便非常的簡單

import pandas as pd
import numpy as np
mat = np.random.randint(0,100,size=(100, 2))
print(mat)
df = pd.DataFrame(mat, columns=["學號", "成績"])
print(df)

儲存Dataframe為csv檔

寫csv檔範例

df.to_csv('data.csv', encoding = 'big5', index = False)

這邊最重要的兩個參數為encoding及index

encoding為編碼方式,常見有utf-8, big5可選
如果資料裡面含中文字元的話,
可以存big5編碼,用excel打開才不會是亂碼。

index參數若不填默認是True,如果設成False就不會把index存起來,建議設成False即可

讀csv檔範例

df2 = pd.read_csv('data.csv', encoding='big5')

注意read_csv的encoding需要選擇相對應的編碼才有辦法讀csv檔

完整生成隨機Dataframe + 讀寫範例

import pandas as pd
import numpy as np
mat = np.random.randint(0,100,size=(100, 2))
df = pd.DataFrame(mat, columns=["學號", "成績"])
df.to_csv('data.csv', encoding = 'big5', index = False)

df2 = pd.read_csv('data.csv', encoding='big5')
print(df2)

參考資料

  1. 官方文檔-numpy.random.randint
  2. 官方文檔-pandas.DataFrame

尚未有邦友留言

立即登入留言