在 `pandas` 中,如果遇到數據量特別大的情況,隨機挑選 DataFrame 的子集可以幫助我們更深入地瞭解數據,從而更好地進行數據分析和決策。 隨機挑選子集的用途主要有: 1. 評估數據質量:隨機挑選 DataFrame 的子集可以幫助我們檢查數據集的質量,以便進一步探索和挖掘數據。例如,我 ...
在 pandas
中,如果遇到數據量特別大的情況,隨機挑選 DataFrame 的子集可以幫助我們更深入地瞭解數據,從而更好地進行數據分析和決策。
隨機挑選子集的用途主要有:
- 評估數據質量:隨機挑選 DataFrame 的子集可以幫助我們檢查數據集的質量,以便進一步探索和挖掘數據。例如,我們可以通過隨機選擇一些行或列來評估數據的分佈、離群值、缺失值等情況。
- 加深理解數據:隨機挑選 DataFrame 的子集可以幫助我們更深入地瞭解數據。例如,我們可以通過隨機選擇一些列來瞭解數據的分佈、趨勢、相關性等情況。
- 發現潛在模式:隨機挑選 DataFrame 的子集可以幫助我們發現潛在的模式或規律。例如,我們可以通過隨機選擇一些行或列來探索數據之間的相關性或趨勢,從而發現潛在的模式或規律。
- 探索新的數據分析方法:隨機挑選 DataFrame 的子集可以幫助我們探索新的數據分析方法。例如,我們可以通過隨機選擇一些列來探索新的數據分析方法,如時間序列分析、空間分析等。
- 提高程式性能:隨機挑選 DataFrame 的子集可以幫助我們優化程式性能。例如,我們可以通過隨機選擇一些列來減少計算量,從而提高程式性能。
本篇介紹一種pandas
挑選子集的方式,以及子集在機器學習中常用的一個場景。
1. 隨機挑選
這次示例中準備的數據來自鏈家網,我採集了一些南京市建鄴區的房產交易數據,共有11290條。
import pandas as pd
fp = "nanjing-jianye.csv"
df = pd.read_csv(fp)
df
1.1. 按百分比挑選
按百分比隨機挑選樣本的核心參數是 frac
和 random_state
。
- frac:樣本數量占總量的百分比
- random_state:隨機狀態,這個值相同,取出的樣本是一樣的
df1 = df.sample(frac=0.1, random_state=1111)
df1.sort_index()
上面的示例中 frac=0.1
,相當於獲取總量10%
的樣本,總量11290
條,所以樣本數量1129
條。
示例中的random_state=1111
,只要改變這個數值,取出的樣本就是會變化。
df1 = df.sample(frac=0.1, random_state=2222)
df1.sort_index()
1.2. 按個數挑選
按個數隨機挑選樣本的核心參數是 n
和 random_state
。
- n:樣本數量
- random_state:隨機狀態,這個值相同,取出的樣本是一樣的
df2 = df.sample(n=100, random_state=1111)
df2.sort_index()
上面的示例中n=100
,隨機取100
個樣本,其中random_state
的作用和按百分比挑選一樣。
2. 機器學習中使用場景
隨機挑選子集的用途開頭已經介紹了很多,還有個重要的應用場景是在機器學習時,可以將數據劃分為訓練集和測試集。
針對這個需求,利用上面介紹的sample
函數封裝一個平均劃分的子集介面。
用於機器學習時分隔訓練集和測試集。
import pandas as pd
import random
def split_dataset(df: pd.DataFrame, n = 10):
"""
df: 帶劃分的數據集
n: 劃分子集的個數,預設10個
"""
total = len(df)
subset_count = total // n
dataset = []
df_left = df.copy()
for i in range(n):
df_subset = df_left.sample(n=subset_count, random_state=random.randint(1000,9999))
dataset.append(df_subset.copy())
df_left = df_left.drop(index=df_subset.index)
return dataset
比如上面示例的房產成交數據(共11290條),通過此方法可以平均劃分成n
個數據集。
ds = split_dataset(df, n=10)
ds
ds
列表中就是平均劃分的10
個子集。
應用機器學習的演算法時,可以迴圈任意選擇7
個作為訓練集,剩餘3
個作為測試集。
3. 附錄
本篇中使用的數據下載地址:nanjing-jianye.csv