如何绘制lineplot折线图展示各年度的歌曲数量
解决方案
核心原因
sns.countplot会自动对指定列做分组计数的聚合运算,但lineplot需要显式传入X轴、Y轴两个维度的列数据,所以你需要先手动统计每年对应的歌曲数量,再传入lineplot即可。
完整可运行代码
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns # 读取数据集 df = pd.read_csv('https://storage.googleapis.com/introduction-to-data-science/spotify-dataset.csv') # 筛选1921年及之后的数据 df = df[df['year'] >= 1921] # 统计每年的歌曲数量,生成带year和对应歌曲数的新数据表 year_count = df.groupby('year', as_index=False).agg(song_count=('year', 'count')) # 绘制折线图 plt.figure(figsize = (40,15)) sns.lineplot(data=year_count, x="year", y="song_count") # 可选操作:添加每个点的数值标签,和countplot的展示效果更一致 for x, y in zip(year_count['year'], year_count['song_count']): plt.text(x, y, str(y), ha='center', va='bottom') plt.show()
补充说明
- 如果不需要过滤1921年之前的数据,删除
df = df[df['year'] >= 1921]这一行即可 - 你也可以用
year_count = df['year'].value_counts().sort_index().reset_index(name='song_count')实现和上述groupby完全一致的统计效果
内容的提问来源于stack exchange,提问作者Rodrigo Romero
相关产品推荐
相关产品推荐

