Python:如何访问从属列?

Python:如何访问从属列?,python,python-3.x,pandas,numpy,finance,Python,Python 3.x,Pandas,Numpy,Finance,我是Sven,在此之前我要说我是Python的绝对初学者。我阅读了《从Python开始》和《Python用于数据分析》这两本书,以便至少对我所做的事情有一个基本的了解。我对下面代码的目标是,我想用过去250天的滚动平均数显示标准普尔500指数的成交量。表示将条形图(seaborn)与折线图(matplotlib.pyplot)相结合 用seaborn作为柱状图绘制“S&P500数据体积”时出现了问题,因为我无法访问下属的“日期”列。我有一个想法,但我不太确定如何开始。有人有想法吗?非常感谢 我的

我是Sven,在此之前我要说我是Python的绝对初学者。我阅读了《从Python开始》和《Python用于数据分析》这两本书,以便至少对我所做的事情有一个基本的了解。我对下面代码的目标是,我想用过去250天的滚动平均数显示标准普尔500指数的成交量。表示将条形图(seaborn)与折线图(matplotlib.pyplot)相结合

用seaborn作为柱状图绘制“S&P500数据体积”时出现了问题,因为我无法访问下属的“日期”列。我有一个想法,但我不太确定如何开始。有人有想法吗?非常感谢

我的方法介于索引、层次和分组之间

           Open   High    Low  Close  Adj Close     Volume
Date                                                        
1993-02-01 438.78 442.52 438.78 442.52     442.52  238570000
1993-02-02 442.52 442.87 440.76 442.55     442.55  271560000
1993-02-03 442.56 447.35 442.56 447.20     447.20  345410000
1993-02-04 447.20 449.86 447.20 449.56     449.56  351140000
1993-02-05 449.56 449.56 446.95 448.93     448.93  324710000

import pandas as pd
import numpy as np
import yfinance as yf
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
import seaborn as sns

yesterday = datetime.now()-timedelta(1)
datetime.strftime(yesterday, "%Y-%m-%d")

SP500 = yf.download('^GSPC', start='1993-02-01', end=yesterday)
pd.set_option('display.float_format', lambda x: '%.2f' % x)

SP500f = SP500.head()
SP500f.groupby

#Stats_Vol = SP500["Volume"]
#Date = SP500["Date"]
#print(Stats_Vol)
#print(Stats_Vol.describe())

#sns.barplot(data=SP500, y="Volume")
#print(Stats_Vol.rolling(250).mean().plot())
plt.show()

 

首先,您需要访问作为索引的日期

  • 可以
    重置索引()
    使其成为列
  • 有两个日期需要打印,因此重新采样,然后在x轴上为显示格式创建一个新列

在您的原始数据框中,日期是索引。您可以通过
data=data.reset_index()
将其设置为列,如果这是您的意思sp500=pd.DataFrame(data=yf.download(“^GSPC”,start='1993-02-01',end=beaty)。reset_index())似乎有效!非常感谢@mcsoini:)我只是想评论一下重置索引(日期到列)造成另一个问题,因为我无法对年份进行分组,因为没有索引,而且没有分组的数据太多。因此非常感谢,但因为数据=SP500.loc[:,“Volume”]\.重采样(“Y”).mean().到u frame()我想现在无法包括滚动250天的平均值,对吗?
import pandas as pd
import numpy as np
import yfinance as yf
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
import seaborn as sns

yesterday = datetime.now()-timedelta(1)
fig, ax = plt.subplots()

SP500 = yf.download('^GSPC', start='1993-02-01', end=yesterday)

# too many days, resample
# do a display format for date (which is the index)
sns.barplot(data=SP500.loc[:,"Volume"]\
            .resample("Y").mean().to_frame()\
            .assign(GDate=lambda dfa: dfa.index.strftime("%Y")), 
            x="GDate", y="Volume", ax=ax)
# rotate the labels
l = ax.set_xticklabels(ax.get_xticklabels(), rotation = 90)