提问人:Froman 提问时间:11/10/2023 最后编辑:Froman 更新时间:11/14/2023 访问量:36
如何将每年平均电影运行时间的 DataFrame 转换为条形图?[复制]
How to turn a DataFrame of average film runtimes by year into a bar plot? [duplicate]
问:
我目前正在做一个快速项目,看看这些年来的电影运行时间。数据来自Netflix数据集,我已经对其进行了过滤,以获取我感兴趣的信息。我还使用 groupby() 和 mean() 按年计算了以分钟为单位的平均电影长度,但是当我尝试创建条形图时,我得到了一个错误。
import pandas as pd
import matplotlib.pyplot as plt
# read the csv files - turn into dataframes
netflix = pd.read_csv('titles.csv')
print(netflix)
# we just want to consider movies with over 60 minutes of runtime
movie_filter = netflix[(netflix["type"] == "MOVIE") &
(netflix["runtime"] > 60)]
# now lets factor in averages
averages_over_time = movie_filter.groupby("release_year")["runtime"].mean()
average_film_runtime = pd.DataFrame(averages_over_time)
plt.plot(average_film_runtime["release_year"], average_film_runtime["runtime"])
plt.show()
以下是我收到的错误。
Traceback (most recent call last):
File "c:\Users\matth\Dropbox\Python Code\Netflix Analysis\netflix.py", line 16, in <module>
plt.plot(average_film_runtime["release_year"], average_film_runtime["runtime"])
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "C:\Users\matth\AppData\Roaming\Python\Python312\site-packages\pandas\core\frame.py", line 3893, in __getitem__
indexer = self.columns.get_loc(key)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\matth\AppData\Roaming\Python\Python312\site-packages\pandas\core\indexes\base.py", line 3797, in get_loc
raise KeyError(key) from err
KeyError: 'release_year'
PS C:\Users\matth\Dropbox\Python Code\Netflix Analysis>
我还是与 Pandas 合作的新手,我已经在这个问题上卡了将近一个小时,所以如果答案很明显,我深表歉意。
谢谢你的帮助。
答:
1赞
scotscotmcc
11/10/2023
#1
我认为您的问题来自这样一个事实,即当您这样做然后运行该分组对象时,新对象使用您的原始列作为索引,而不是列。groupby
pd.DataFrame()
也就是说,average_film_runtime没有名为“release_year”和“运行时”的两列,但它有一个名为“release_year”的索引和一个名为“运行时”的列(系列)。
您应该能够通过执行然后运行它来解决这个问题average_film_runtime = average_film_runtime.reset_index()
plt.plot()
评论
0赞
Froman
11/10/2023
我现在看到了索引的问题。你的建议也奏效了。感谢您清晰而有用的回复!
评论