學習`pandas`的過程中,為了嘗試`pandas`提供的各類功能強大的函數,常常需要花費很多時間去創造測試數據。 在`pandas`中,快速創建測試數據可以更快的評估 `pandas` 函數。通過生成一組測試數據,可以評估例如 `read_csv`、`read_excel`、`groupby`等 ...
學習pandas
的過程中,為了嘗試pandas
提供的各類功能強大的函數,常常需要花費很多時間去創造測試數據。
在pandas
中,快速創建測試數據可以更快的評估 pandas
函數。
通過生成一組測試數據,可以評估例如 read_csv
、read_excel
、groupby
等函數,以確保這些函數在處理不同數據格式和結構時都能正常工作。
本篇介紹一些快速創建測試數據的方法,提高學習pandas
的效率。
1. 一般方法
一般創建測試數據的有兩種:
- 一種是直接創建每行每列的數據
- 用 numpy 隨機生成二維數組
1.1. 直接創建數據
這種方式之前的視頻中已經多次使用,直接創建數據雖然麻煩,但好處是每個數據都可控,不論是數據類型還是值都高度可控。
import pandas as pd
df = pd.DataFrame(
{
"數學": [100, 88, 94, 76, 84],
"語文": [98, 80, 86, 76, 90],
"英語": [95, 91, 86, 95, 83],
},
index=["小紅", "小明", "小汪", "小李", "小張"],
)
df
1.2. 隨機二維數組
隨機生成二維數組需要用到numpy
庫,通過 numpy
生成隨機二維數據,然後將其轉換為pandas
的DataFrame
。
比如,下麵生成一個3行4列的隨機數據:
pd.DataFrame(np.random.rand(3, 4))
上面的數據是隨機的,每次運行產生的結果會不一樣。
隨機創建數據時,也可以設置索引和列名。
pd.DataFrame(
np.random.rand(3, 4),
index=["row1", "row2", "row3"],
columns=["col1", "col2", "col3", "col4"],
)
2. 特殊技巧
上面介紹隨機生成數據的方法只能生成浮點型數據,而且索引和列名都只能是預設的自增數字,數據的多樣性不夠。
下麵介紹pandas自身提供的一些隨機生成數據方法,可以生成不同類型的隨機數據。
2.1. makeDataFrame
makeDataFrame()
方法會隨機創建一個 30x4
的數據集。
df = pd.util.testing.makeDataFrame()
print(df.shape)
df.head()
索引是隨機字元串。
2.2. makeMissingDataFrame
makeMissingDataFrame()
方法會隨機創建一個 30x4
包含缺失值的數據集,缺失值的位置也是隨機的。
df = pd.util.testing.makeMissingDataframe()
print(df.shape)
df.head()
2.3. makeTimeDataFrame
makeTimeDataFrame()
方法會隨機創建一個 30x4
包含的數據集,索引是自增的日期。
df = pd.util.testing.makeTimeDataFrame()
print(df.shape)
df.head()
2.4. makeMixedDataFrame
makeMixedDataFrame()
方法會隨機創建一個 5x4
的數據集,其中列的類型是多樣的,有字元串,日期和數值。
df = pd.util.testing.makeMixedDataFrame()
print(df.shape)
df
3. 補充
上面介紹的方法生成的數據集不大,如果需要生成數據量較大的數據集的話,可以迴圈生成DataFrame,然後再拼接在一起。
上面介紹的方法,每次生成的數據集的值是隨機的,不用擔心拼接後全是重覆的數據。
此外,除了上面介紹的方法之外,pd.util.testing
還有其他一些創建數據的方法,歡迎大家去探索,使用。