pandas采样的实现方法
在数据分析和处理过程中,常常需要对数据进行随机采样,以便获取具有代表性的小样本或进行数据拆分。pandas 提供了非常方便的方法来实现随机采样。
基本用法:DataFrame 的 sample 方法
pandas 的 DataFrame 提供了 sample 方法用于随机采样,下面说明其基本用法和常见参数:
示例数据
首先,创建一个示例 DataFrame:
import pandas as pd
# 创建一个示例 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:随机抽取指定数量的行
可以使用 n 参数指定抽取的行数:
# 随机抽取 3 行数据 sampled_df = df.sample(n=3) print(sampled_df)
示例 2:按比例随机抽样
可以使用 frac 参数指定抽样的比例,例如 frac=0.5 表示随机抽取 50% 的行数:
# 随机抽取 50% 的行 sampled_df = df.sample(frac=0.5) print(sampled_df)
示例 3:随机抽样时指定随机种子
为了保证每次抽样结果相同,可以使用 random_state 参数指定随机种子:
# 随机抽取 3 行数据,并指定随机种子 sampled_df = df.sample(n=3, random_state=1) print(sampled_df)
示例 4:按行或按列随机抽样
默认情况下,sample 是按行抽样(axis=0),也可以设置 axis=1 来按列进行抽样:
# 按列随机抽取 2 列 sampled_df = df.sample(n=2, axis=1) print(sampled_df)
示例 5:返回是否放回抽样
默认情况下,sample 是不放回抽样,即一个样本只会被抽取一次。可以设置 replace=True 来进行有放回抽样:
# 进行有放回抽样,随机抽取 10 个样本 sampled_df = df.sample(n=10, replace=True, random_state=1) print(sampled_df)
示例 6:按某列进行分层随机抽样
有时需要按某列的值进行分层随机抽样,可以使用 groupby 和 apply 方法结合 sample 来实现:
# 按 'city' 列进行分层随机抽样,每个城市随机抽取 1 行
sampled_df = df.groupby('city').apply(lambda x: x.sample(n=1, random_state=1)).reset_index(drop=True)
print(sampled_df)
总结
pandas 提供了丰富的参数和功能,让 sample 方法能够满足各种随机抽样的需求,包括指定抽样数量、按比例抽样、设置随机种子、有无放回抽样以及按列和分层抽样。这些功能在数据分析和处理过程中非常有用,有助于快速获取具有代表性的小样本进行分析。
到此这篇关于pandas采样的实现方法的文章就介绍到这了,更多相关pandas采样内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python控制自己的手机摄像头拍照并自动发送到邮箱案例讲解
这篇文章主要介绍了Python控制自己的手机摄像头拍照,并把照片自动发送到邮箱,大概思路是通过opencv调用摄像头拍照保存图像本地用email库构造邮件内容,保存的图像以附件形式插入邮件内容用smtplib库发送邮件到指定邮箱,需要的朋友可以参考下2022-04-04
Pycharm 2020最新永久激活码(附最新激活码和插件)
最近很多朋友的Pycharm激活时间又过期了,今天小编再把激活的方法汇总和工具分享一下,文中给大家分享两种方式,需要的朋友直接拿去用吧2020-01-01


最新评论