python-Pandas学习 如何对数据集随机抽样?

本文介绍了如何使用Pandas库中的sample方法对数据集进行随机抽样。提供了具体的参数解释及用法示例,并简要提及了使用Numpy进行抽样的替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:有时候我们只需要数据集中的一部分,并不需要全部的数据。这个时候我们就要对数据集进行随机的抽样。pandas中自带有抽样的方法。

应用场景:

我有10W行数据,每一行都11列的属性。

现在,我们只需要随机抽取其中的2W行。

实现方法很简单:

利用Pandas库中的sample。

DataFrame.sample(n=Nonefrac=Nonereplace=Falseweights=Nonerandom_state=Noneaxis=None)

n是要抽取的行数。(例如n=20000时,抽取其中的2W行)

frac是抽取的比列。(有一些时候,我们并对具体抽取的行数不关系,我们想抽取其中的百分比,这个时候就可以选择使用frac,例如frac=0.8,就是抽取其中80%)

replace:是否为有放回抽样,取replace=True时为有放回抽样。

weights这个是每个样本的权重,具体可以看官方文档说明。

random_state这个在之前的文章已经介绍过了。

axis是选择抽取数据的行还是列。axis=0的时是抽取行,axis=1时是抽取列(也就是说axis=1时,在列中随机抽取n列,在axis=0时,在行中随机抽取n行)

 

—————————————————————————————————————————————————————————

具体用法:

假设DataFrame为df

 

import pandas as pd
df.sample(n=20000)

 

 

 

 

 

 

另外,介绍一种不是Pandas中的方法。如果想用Numpy这个库进行也可以。

 

import numpy as np
np.random.sample(Your_index)

 

 

 

 

 

 

 

处理数亿行CSV数据时,直接加载整个数据集到内存可能会引起内存溢出问题。使用Pythonpandas库可以有效地实现数据的分块处理,并在每块中执行随机抽样,以减少内存压力并提高效率。具体步骤如下: 参考资源链接:[Python批量处理亿级数据分块策略](https://wenku.youkuaiyun.com/doc/646c2901543f844488cf6129?spm=1055.2569.3001.10343) 1. 使用pandas库中的`read_csv`函数读取数据。通过设置`iterator=True`参数,函数会返回一个迭代器对象,允许我们分块读取数据。 2. 通过循环迭代器,我们可以逐步处理个数据块。根据需要设置合适的块大小(chunkSize),例如每块***行。 3. 对每个数据块进行必要的数据清洗和处理操作。这可能包括数据类型转换、空处理、异常检测等。 4. 在数据块处理完毕后,使用随机抽样技术进行样本选择。可以利用Python标准库中的`random.randrange`函数,在每个数据块内进行随机选择,确保样本的代表性。 5. 将抽样结果写入新的CSV文件中,可以使用`csv.writer`或者`pandas`的`to_csv`方法来完成文件的写入操作。记得使用`with open`语句以确保文件正确关闭,并注意设置`newline=''`以保证跨平台的新行一致性。 6. 在整个过程中,使用`try-except`结构来捕获可能出现的`StopIteration`异常,这是迭代器耗尽数据时抛出的异常。 通过以上步骤,你可以有效地处理大规模CSV数据,同时避免内存溢出的问题。推荐参考《Python批量处理亿级数据分块策略》,该资料详细介绍了使用Python进行大数据分块处理的策略和代码实现,能够帮助你更好地理解和实践这一过程。 参考资源链接:[Python批量处理亿级数据分块策略](https://wenku.youkuaiyun.com/doc/646c2901543f844488cf6129?spm=1055.2569.3001.10343)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值