DataFrame:依条件进行数据抽取


抽取符合条件的数据(我这里某种分类的数据条数大于1000)作为新的数据集,原来的数据集删除抽取的部分

数据概览

import numpy as np
import pandas as pd
train_df = pd.read_excel('./data/train_set2_cyt_20220713.xlsx')
train_df.head()
Unnamed: 0prod_namecatid_4catid_5
00宁安堡 宁夏特产 甲级 中宁枸杞白250g1401170114011701001
11一品玉 坚果炒货 休闲零食 新疆巴旦木400g/袋1401190114011901003
22富昌 南北干货 宁夏特产 枸杞子 200g1401170114011701001
33果园老农 巴旦木 坚果炒货 零食坚果 巴旦木仁美国扁桃仁100g*31401190114011901003
44正林 休闲零食 坚果炒货 3A黑瓜子500g/袋1401190114011901010
train_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 659614 entries, 0 to 659613
Data columns (total 4 columns):
 #   Column      Non-Null Count   Dtype 
---  ------      --------------   ----- 
 0   Unnamed: 0  659614 non-null  int64 
 1   prod_name   659614 non-null  object
 2   catid_4     659614 non-null  int64 
 3   catid_5     659614 non-null  int64 
dtypes: int64(3), object(1)
memory usage: 20.1+ MB
# 删掉多余的列
train_df = train_df.drop(train_df.columns[0],axis = 1)
train_df.head()
prod_namecatid_4catid_5
0宁安堡 宁夏特产 甲级 中宁枸杞白250g1401170114011701001
1一品玉 坚果炒货 休闲零食 新疆巴旦木400g/袋1401190114011901003
2富昌 南北干货 宁夏特产 枸杞子 200g1401170114011701001
3果园老农 巴旦木 坚果炒货 零食坚果 巴旦木仁美国扁桃仁100g*31401190114011901003
4正林 休闲零食 坚果炒货 3A黑瓜子500g/袋1401190114011901010

思路及实现

在这个例子中,我们假设要抽取每个分类中的前 5 条数据,只有当分类数据量超过 1000 条时才会被抽取。cat_counts[cat_counts >= threshold] 表示选择分类数据量超过阈值的分类,pd.concat([df[df[‘catid_5’] == cat].sample(n) for cat in cat_to_keep]) 表示在这些分类中随机抽取 n 条数据,并使用 concat() 方法将这些数据合并成一个新的 DataFrame。

最后,我们使用 drop() 方法将抽取出来的数据从原数据集中删除,df = df.drop(df_to_keep.index) 表示删除索引为 df_to_keep 的行,即抽取出来的数据。

# 判断catid_5的分布情况,分布较多的可以考虑抽取
import pandas as pd


# 获取catid_5的分布情况
cat_counts = train_df['catid_5'].value_counts()

# 根据条件抽取数据
n = 5 # 抽取5条数据
threshold = 1000 # 分类数据量的阈值
cat_to_keep = cat_counts[cat_counts >= threshold].index
df_to_keep = pd.concat([train_df[train_df['catid_5'] == cat].sample(n) for cat in cat_to_keep])

# 将抽取出来的数据在原数据集中删除
df = train_df.drop(df_to_keep.index)

# 重置index
df.reset_index(drop = True,inplace = True)
df_to_keep.reset_index(drop = True,inplace = True)

# 查看抽取出来的数据
print(df_to_keep)

                                  prod_name   catid_4      catid_5
0          思宏 红满疆枣夹核桃仁500g袋装 红枣夹核桃 新老包装随机发货  14011901  14011901013
1           坚果零食特产2017年新货临安水煮手剥大籽山核桃 小核桃1罐装  14011901  14011901013
2     2017云南大姚纸皮薄皮核桃  2000g  原味无漂白  香源牌  包邮  14011901  14011901013
3        2017年新货原味新鲜优质薄皮干生核桃仁手剥大核桃肉500g1斤包邮  14011901  14011901013
4                 包邮坚果特产东阳荣耀喜滋缘熟纸皮核桃2500g/箱  14011901  14011901013
...                                     ...       ...          ...
1280      正宗福建泉州安溪蓬莱冬瓜糖冬瓜条传统蜜饯儿时味道 零添加 500g  14011204  14011204005
1281      嘉乐城 椰皇冬瓜饼  冬瓜糕 冬瓜翅 冬蓉馅皮薄馅靓 台山特色手信  14011204  14011204005
1282                      海丰特产应利冬瓜糖400克3袋包邮  14011204  14011204005
1283        冬瓜荷叶茶 :冬瓜、荷叶、 山楂、决明子、大麦    160克  14011204  14011204005
1284         密云新鲜蔬菜冬瓜 2斤左右 农家肥无农药 应季蔬菜 健康美味  14011204  14011204005

[1285 rows x 3 columns]
# 保存训练集以及
df_to_keep.to_excel('./data/test-set23-3-24.xlsx',index = False)
df.to_excel('./data/train_set23-3-24.xlsx',index = False)

chat-gpt使用相关

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值