当前位置: 代码网 > it编程>前端脚本>Python > pandas采样的实现方法

pandas采样的实现方法

2025年01月01日 Python 我要评论
在数据分析和处理过程中,常常需要对数据进行随机采样,以便获取具有代表性的小样本或进行数据拆分。pandas 提供了非常方便的方法来实现随机采样。基本用法:dataframe 的sample方法pand

在数据分析和处理过程中,常常需要对数据进行随机采样,以便获取具有代表性的小样本或进行数据拆分。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采样内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com