pandas采樣的實(shí)現(xiàn)方法
在數(shù)據(jù)分析和處理過(guò)程中,常常需要對(duì)數(shù)據(jù)進(jìn)行隨機(jī)采樣,以便獲取具有代表性的小樣本或進(jìn)行數(shù)據(jù)拆分。pandas 提供了非常方便的方法來(lái)實(shí)現(xiàn)隨機(jī)采樣。
基本用法:DataFrame 的 sample 方法
pandas 的 DataFrame 提供了 sample 方法用于隨機(jī)采樣,下面說(shuō)明其基本用法和常見(jiàn)參數(shù):
示例數(shù)據(jù)
首先,創(chuàng)建一個(gè)示例 DataFrame:
import pandas as pd
# 創(chuàng)建一個(gè)示例 DataFrame
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Hannah'],
'age': [25, 30, 35, 40, 45, 50, 55, 60],
'city': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix', 'Philadelphia', 'San Antonio', 'San Diego']
}
df = pd.DataFrame(data)
print(df)
示例 1:隨機(jī)抽取指定數(shù)量的行
可以使用 n 參數(shù)指定抽取的行數(shù):
# 隨機(jī)抽取 3 行數(shù)據(jù) sampled_df = df.sample(n=3) print(sampled_df)
示例 2:按比例隨機(jī)抽樣
可以使用 frac 參數(shù)指定抽樣的比例,例如 frac=0.5 表示隨機(jī)抽取 50% 的行數(shù):
# 隨機(jī)抽取 50% 的行 sampled_df = df.sample(frac=0.5) print(sampled_df)
示例 3:隨機(jī)抽樣時(shí)指定隨機(jī)種子
為了保證每次抽樣結(jié)果相同,可以使用 random_state 參數(shù)指定隨機(jī)種子:
# 隨機(jī)抽取 3 行數(shù)據(jù),并指定隨機(jī)種子 sampled_df = df.sample(n=3, random_state=1) print(sampled_df)
示例 4:按行或按列隨機(jī)抽樣
默認(rèn)情況下,sample 是按行抽樣(axis=0),也可以設(shè)置 axis=1 來(lái)按列進(jìn)行抽樣:
# 按列隨機(jī)抽取 2 列 sampled_df = df.sample(n=2, axis=1) print(sampled_df)
示例 5:返回是否放回抽樣
默認(rèn)情況下,sample 是不放回抽樣,即一個(gè)樣本只會(huì)被抽取一次??梢栽O(shè)置 replace=True 來(lái)進(jìn)行有放回抽樣:
# 進(jìn)行有放回抽樣,隨機(jī)抽取 10 個(gè)樣本 sampled_df = df.sample(n=10, replace=True, random_state=1) print(sampled_df)
示例 6:按某列進(jìn)行分層隨機(jī)抽樣
有時(shí)需要按某列的值進(jìn)行分層隨機(jī)抽樣,可以使用 groupby 和 apply 方法結(jié)合 sample 來(lái)實(shí)現(xiàn):
# 按 'city' 列進(jìn)行分層隨機(jī)抽樣,每個(gè)城市隨機(jī)抽取 1 行
sampled_df = df.groupby('city').apply(lambda x: x.sample(n=1, random_state=1)).reset_index(drop=True)
print(sampled_df)
總結(jié)
pandas 提供了豐富的參數(shù)和功能,讓 sample 方法能夠滿足各種隨機(jī)抽樣的需求,包括指定抽樣數(shù)量、按比例抽樣、設(shè)置隨機(jī)種子、有無(wú)放回抽樣以及按列和分層抽樣。這些功能在數(shù)據(jù)分析和處理過(guò)程中非常有用,有助于快速獲取具有代表性的小樣本進(jìn)行分析。
到此這篇關(guān)于pandas采樣的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)pandas采樣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
TensorFlow實(shí)現(xiàn)簡(jiǎn)單的CNN的方法
這篇文章主要介紹了TensorFlow實(shí)現(xiàn)簡(jiǎn)單的CNN的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python Opencv使用ann神經(jīng)網(wǎng)絡(luò)識(shí)別手寫(xiě)數(shù)字功能
這篇文章主要介紹了opencv(python)使用ann神經(jīng)網(wǎng)絡(luò)識(shí)別手寫(xiě)數(shù)字,由于這里主要研究knn算法,為了圖簡(jiǎn)單,直接使用Keras的mnist手寫(xiě)數(shù)字解析模塊,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Python PyQt5實(shí)戰(zhàn)項(xiàng)目之文件拷貝器的具體實(shí)現(xiàn)詳解
PyQt5以一套Python模塊的形式來(lái)實(shí)現(xiàn)功能。它包含了超過(guò)620個(gè)類,600個(gè)方法和函數(shù)。本篇文章手把手帶你用PyQt5實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件拷貝器,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11
Python黑魔法Descriptor描述符的實(shí)例解析
與迭代器和裝飾器等一樣,描述符也是Python編程中的一項(xiàng)高級(jí)技巧,這里我們就來(lái)講解Python黑魔法Descriptor描述符的實(shí)例解析:2016-06-06
python3.3使用tkinter開(kāi)發(fā)猜數(shù)字游戲示例
這篇文章主要介紹了python3.3使用tkinter開(kāi)發(fā)猜數(shù)字游戲示例,需要的朋友可以參考下2014-03-03
Flask搭建虛擬環(huán)境并運(yùn)行第一個(gè)flask程序
這篇文章主要介紹了Flask搭建虛擬環(huán)境并運(yùn)行第一個(gè)flask程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

