python 读取csv文件 使数据集每个类别样本数一样
时间: 2023-07-18 07:05:02 浏览: 112
可以按照以下步骤读取csv文件并使数据集每个类别样本数相同:
1. 首先导入pandas库,使用read_csv()函数读取csv文件并存储为DataFrame对象。
```python
import pandas as pd
df = pd.read_csv('data.csv')
```
2. 使用groupby()函数按照类别分组,并使用size()函数统计每个类别的样本数。
```python
class_counts = df.groupby('class').size()
```
3. 找到最小的类别样本数min_count。
```python
min_count = class_counts.min()
```
4. 使用sample()函数从每个类别中随机抽取min_count个样本,并将结果存储为新的DataFrame对象。
```python
balanced_df = df.groupby('class').apply(lambda x: x.sample(min_count)).reset_index(drop=True)
```
最后,balanced_df就是每个类别样本数相同的新数据集。
相关问题
python 读取csv文件 在每个类别中选取等比例训练样本
可以使用`pandas`库读取csv文件,并且使用`groupby`方法将数据按照类别分组。然后可以根据每个类别的总数计算出需要选取的训练样本数量,再使用`sample`方法从每个类别中选取相应数量的训练样本。
以下是一个示例代码:
```python
import pandas as pd
# 读取csv文件
df = pd.read_csv('data.csv')
# 按照类别分组
groups = df.groupby('category')
# 计算每个类别需要选取的训练样本数量
sample_size = 100 # 每个类别选取100个样本
sample_counts = {}
for name, group in groups:
count = len(group)
sample_counts[name] = min(count, sample_size)
# 从每个类别中选取相应数量的训练样本
samples = []
for name, group in groups:
sample_count = sample_counts[name]
if sample_count > 0:
sample = group.sample(n=sample_count)
samples.append(sample)
# 合并选取的训练样本
result = pd.concat(samples)
```
在这个示例代码中,我们假设每个类别选取100个训练样本,可以根据实际情况调整`sample_size`变量的值。另外,`sample`方法默认是随机选取训练样本,如果需要按照一定的规则选取,可以自己编写选择逻辑。
python 读取csv文件 在每个类别中选取等比例训练样本和测试样本
可以使用 pandas 库读取CSV文件,并使用 sklearn 库中的 train_test_split 函数来实现等比例划分训练样本和测试样本。下面是一个示例代码:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
# 读取CSV文件
data = pd.read_csv("data.csv")
# 将数据按照类别分组
groups = data.groupby("category")
train_data = pd.DataFrame()
test_data = pd.DataFrame()
# 对每个类别进行等比例划分训练样本和测试样本
for name, group in groups:
train, test = train_test_split(group, test_size=0.2)
train_data = train_data.append(train)
test_data = test_data.append(test)
# 输出划分后的训练集和测试集
print("训练集:")
print(train_data)
print("测试集:")
print(test_data)
```
在上述代码中,我们首先使用 pandas 库读取了一个名为 data.csv 的 CSV 文件,并将数据按照 category 列进行了分组。然后,我们使用 sklearn 库中的 train_test_split 函数对每个类别进行了等比例划分训练样本和测试样本,并将划分后的数据分别存储到 train_data 和 test_data 两个 DataFrame 中。最后,我们输出了划分后的训练集和测试集。
阅读全文