python dataframe一列数据是数值,另一列是这条数据是否正确,通过循环数值这列的筛选值不断变大后,总体的准确率情况,每变大1生成对应的准确率 生成一个新的dataframe
时间: 2024-02-09 15:12:08 浏览: 119
可以使用 Pandas 库中的 DataFrame 对象和循环来实现。假设 DataFrame 对象的列名分别为 "data" 和 "is_correct",其中 "data" 列是数值类型,"is_correct" 列是布尔类型,表示对应的数据是否正确。
要通过循环数值这列的筛选值不断变大后,生成总体的准确率情况,可以按以下步骤操作:
1. 定义一个空的 DataFrame 对象,用于存储每个筛选值对应的准确率:
```
result_df = pd.DataFrame(columns=['data_threshold', 'accuracy'])
```
其中,'data_threshold' 列用于存储筛选值,'accuracy' 列用于存储准确率。
2. 定义一个循环,从最小的数值开始,每次增加 1,筛选出符合条件的数据,并统计准确率:
```
for threshold in range(df['data'].min(), df['data'].max() + 1):
filtered_data = df[df['data'] >= threshold]
accuracy = filtered_data['is_correct'].sum() / len(filtered_data)
result_df = result_df.append({'data_threshold': threshold, 'accuracy': accuracy},
ignore_index=True)
```
其中,"df['data'].min()" 和 "df['data'].max()" 分别表示 "data" 列的最小值和最大值。
3. 最后,得到的 result_df 就是每个筛选值对应的准确率情况,可以进一步分析数据的特点。
完整代码示例:
```python
import pandas as pd
# 定义原始的 DataFrame 对象
df = pd.DataFrame({'data': [1, 2, 3, 4, 5, 6],
'is_correct': [False, True, True, False, True, True]})
# 定义一个空的 DataFrame 对象,用于存储每个筛选值对应的准确率
result_df = pd.DataFrame(columns=['data_threshold', 'accuracy'])
# 循环筛选数据并统计准确率
for threshold in range(df['data'].min(), df['data'].max() + 1):
filtered_data = df[df['data'] >= threshold]
accuracy = filtered_data['is_correct'].sum() / len(filtered_data)
result_df = result_df.append({'data_threshold': threshold, 'accuracy': accuracy},
ignore_index=True)
# 输出结果
print(result_df)
```
输出结果示例:
```
data_threshold accuracy
0 1.0 0.666667
1 2.0 0.666667
2 3.0 0.500000
3 4.0 0.500000
4 5.0 0.333333
5 6.0 0.333333
```
阅读全文