如何用Pandas高效保留DataFrame中每个neighborhood的100行数据?
高效精简大型数据集的方法
针对超大型数据集,按neighborhood分组后每组保留指定行数(此处为100行),最高效的实现方式是利用Pandas的分组操作,结合对应方法满足不同需求:
1. 保留每组前100行(按原数据顺序)
若无需随机抽样,仅保留每个neighborhood的前100条记录,groupby+head()是性能最优的方案,Pandas内部已做优化,避免冗余计算:
import pandas as pd # 读取你的超大型数据集(示例为CSV格式,可替换为其他读取方式) df = pd.read_csv("your_large_dataset.csv") # 按neighborhood分组,每组保留前100行 trimmed_df = df.groupby("neighborhood").head(100)
2. 随机保留每组100行(无固定顺序要求)
若需要从每个neighborhood中随机抽取100条记录,使用groupby+sample(),设置random_state可保证结果可复现:
trimmed_df = df.groupby("neighborhood").sample(n=100, random_state=42)
超大型数据集额外优化提示
- 读取数据时仅加载必要列,减少内存占用:
df = pd.read_csv("your_large_dataset.csv", usecols=["name", "neighborhood"]) - 若数据集无法完全加载到内存,可使用Dask并行处理框架,语法与Pandas兼容:
import dask.dataframe as dd ddf = dd.read_csv("your_large_dataset.csv") trimmed_ddf = ddf.groupby("neighborhood").head(100) # 将计算结果转为Pandas DataFrame trimmed_df = trimmed_ddf.compute()
内容的提问来源于stack exchange,提问作者Julien8
相关产品推荐
相关产品推荐

