pandas采樣的實(shí)現(xiàn)方法
在數(shù)據(jù)分析和處理過程中,常常需要對(duì)數(shù)據(jù)進(jìn)行隨機(jī)采樣,以便獲取具有代表性的小樣本或進(jìn)行數(shù)據(jù)拆分。pandas 提供了非常方便的方法來實(shí)現(xiàn)隨機(jī)采樣。
基本用法:DataFrame 的 sample 方法
pandas 的 DataFrame 提供了 sample
方法用于隨機(jī)采樣,下面說明其基本用法和常見參數(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
來按列進(jìn)行抽樣:
# 按列隨機(jī)抽取 2 列 sampled_df = df.sample(n=2, axis=1) print(sampled_df)
示例 5:返回是否放回抽樣
默認(rèn)情況下,sample
是不放回抽樣,即一個(gè)樣本只會(huì)被抽取一次。可以設(shè)置 replace=True
來進(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
來實(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ī)種子、有無放回抽樣以及按列和分層抽樣。這些功能在數(shù)據(jù)分析和處理過程中非常有用,有助于快速獲取具有代表性的小樣本進(jìn)行分析。
到此這篇關(guān)于pandas采樣的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)pandas采樣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python計(jì)算三角函數(shù)之a(chǎn)cos()方法的使用
這篇文章主要介紹了用Python計(jì)算三角函數(shù)之a(chǎn)cos()方法的使用,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05Python networkx包的實(shí)現(xiàn)
這篇文章主要介紹了Python networkx包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02pandas實(shí)現(xiàn)處理TB級(jí)別的數(shù)據(jù)
這篇文章主要介紹了pandas實(shí)現(xiàn)處理TB級(jí)別的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04Python控制自己的手機(jī)攝像頭拍照并自動(dòng)發(fā)送到郵箱案例講解
這篇文章主要介紹了Python控制自己的手機(jī)攝像頭拍照,并把照片自動(dòng)發(fā)送到郵箱,大概思路是通過opencv調(diào)用攝像頭拍照保存圖像本地用email庫構(gòu)造郵件內(nèi)容,保存的圖像以附件形式插入郵件內(nèi)容用smtplib庫發(fā)送郵件到指定郵箱,需要的朋友可以參考下2022-04-04Pycharm?2020最新永久激活碼(附最新激活碼和插件)
最近很多朋友的Pycharm激活時(shí)間又過期了,今天小編再把激活的方法匯總和工具分享一下,文中給大家分享兩種方式,需要的朋友直接拿去用吧2020-01-01使用python動(dòng)態(tài)生成波形曲線的實(shí)現(xiàn)
今天小編就為大家分享一篇使用python動(dòng)態(tài)生成波形曲線的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12