现在我有一个dataframe,其中有两列分别为ticker和prediction。我先按prediction升序排列,然后分别提取出前5%和后5%对应的ticker
时间: 2024-10-27 14:07:26 浏览: 9
当你有一个DataFrame,并且想按照`prediction`列进行升序排序,然后提取出最前面和最后面5%的`ticker`,你可以使用pandas库提供的功能来完成这个任务。以下是步骤:
1. 首先,你需要对DataFrame按`prediction`列进行排序。这可以通过`sort_values()`函数完成,传入`by='prediction'`和`ascending=True`表示升序排列。
```python
sorted_df = df.sort_values(by='prediction', ascending=True)
```
2. 接下来,计算5%的数据点。你可以通过`len(df)`获取总行数,然后乘以0.05得到5%的行数。然后,利用`iloc`选取相应索引范围内的`ticker`值。这里假设你的数据不包含缺失值,如果有缺失值,你可能需要加上条件筛选。
```python
total_rows = len(sorted_df)
top_5_percent_index = total_rows * 0.05
bottom_5_percent_index = total_rows - top_5_percent_index
top_5_percent_tickers = sorted_df.iloc[:int(top_5_percent_index), 'ticker']
bottom_5_percent_tickers = sorted_df.iloc[int(bottom_5_percent_index):, 'ticker']
```
现在`top_5_percent_tickers`包含了预测值最高的前5%的ticker,`bottom_5_percent_tickers`包含了预测值最低的后5%的ticker。
阅读全文