如何将多个文件作为单独的数据帧读入,并对一列执行计算?

2024-05-23 17:10:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我计算的单一股票回报率如下:

data = pd.read_csv(r'**file**.csv')
data.index = data.Date
data['Return %'] = data['AAPL'].pct_change(-1)*100
data

输出:

    Date    AAPL    Return %
Data            
2020-09-11  2020-09-11  56.00   0.000000
2020-09-10  2020-09-10  56.00   -3.879162
2020-09-09  2020-09-09  58.26   2.138850
2020-09-08  2020-09-08  57.04   -2.211555
2020-09-04  2020-09-04  58.33   0.882048
2020-09-03  2020-09-03  57.82   -3.585126
2020-09-02  2020-09-02  59.97   -0.133222

现在,我保存了许多其他csv文件作为股票符号,我想使用这些符号中的每一个来执行上述相同的计算。 除此之外,我还想打印一份报告,列出每一天中最好的一天

如果需要更多的细节,请让我知道

提前谢谢


Tags: csvreaddatadateindexreturn符号change
1条回答
网友
1楼 · 发布于 2024-05-23 17:10:09
  • 我认为对您的数据来说,最好的选择是将文件读入数据帧字典。
    • 使用pathlib.glob创建所有文件的列表
    • 使用dict理解创建数据帧的dict
  • 可以使用dict.items()以字典的标准方式对字典进行迭代
  • df_dict[k]为每个数据帧寻址,其中k是dict键,即文件名
  • 从上一个question开始,我希望.csv文件将以一个Date列而不是两个列读入
  • Date设置为索引后,每个文件的数字数据应位于索引0处的列中。
    • 由于每个文件的列名不同,因此最好使用^{}来寻址该列
    • :表示所有行,0是数值数据的列索引
  • df_dict.keys()将返回所有键的列表
  • 使用df_dict[key]单独访问数据帧
import pandas as pd
from pathlib import Path

# create the path to the files
p = Path('c:/Users/<<user_name>>/Documents/stock_files')

# get all the files
files = p.glob('*.csv')

# created the dict of dataframes
df_dict = {f.stem: pd.read_csv(f, parse_dates=['Date'], index_col='Date') for f in files}

# apply calculations to each dataframe and update the dataframe
# since the stock data is in column 0 of each dataframe, use .iloc
for k, df in df_dict.items():
    df_dict[k]['Return %'] = df.iloc[:, 0].pct_change(-1)*100

相关问题 更多 >