用python写出有关周杰伦歌曲的数据可视化分析
时间: 2023-07-27 17:10:28 浏览: 199
好的,以下是一些用Python进行周杰伦歌曲数据可视化分析的示例:
1. 首先,我们可以使用 `pandas` 库读取包含周杰伦所有歌曲信息的数据集(例如,从网上爬取)并进行基本的数据清洗。接着,我们可以使用 `matplotlib` 或 `seaborn` 等库绘制一些简单的图表来探索数据,例如歌曲数量随时间的变化趋势、专辑中不同类型歌曲的比例等等。
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 读取数据集
df = pd.read_csv('jaychou_songs.csv')
# 数据清洗和转换
df['release_date'] = pd.to_datetime(df['release_date'], format='%Y-%m-%d')
df['album_type'] = df['album_type'].astype('category')
# 绘制歌曲数量随时间的变化趋势
df.groupby(df['release_date'].dt.year)['song_id'].count().plot(kind='line', figsize=(10, 6))
plt.title('Number of Songs Released by Year')
plt.xlabel('Year')
plt.ylabel('Number of Songs')
plt.show()
# 绘制专辑中不同类型歌曲的比例
plt.figure(figsize=(8, 8))
df['album_type'].value_counts().plot(kind='pie', autopct='%1.1f%%')
plt.title('Proportion of Song Types in Albums')
plt.legend()
plt.show()
```
2. 如果我们有周杰伦歌曲的音频数据,我们可以使用 `librosa` 库来提取音频特征,并使用 `matplotlib` 或 `seaborn` 等库绘制可视化图表来分析不同歌曲的音频特征。例如,可以绘制每首歌曲的节奏(beats)和能量(energy)分布图。
```python
import librosa
import librosa.display
# 读取音频文件并提取特征
y, sr = librosa.load('song.mp3')
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
chroma_stft = librosa.feature.chroma_stft(y=y, sr=sr)
spectral_centroid = librosa.feature.spectral_centroid(y=y, sr=sr)
spectral_contrast = librosa.feature.spectral_contrast(y=y, sr=sr)
spectral_rolloff = librosa.feature.spectral_rolloff(y=y, sr=sr)
rmse = librosa.feature.rms(y=y)
# 绘制节奏和能量分布图
plt.figure(figsize=(10, 6))
librosa.display.specshow(chroma_stft, y_axis='chroma', x_axis='time')
plt.colorbar()
plt.title('Chromagram')
plt.xlabel('Time (s)')
plt.ylabel('Pitch Class')
plt.show()
plt.figure(figsize=(10, 6))
plt.plot(librosa.times_like(beats), librosa.frames_to_time(beats), color='r')
plt.plot(librosa.times_like(rmse[0]), rmse[0], alpha=0.5, label='RMS Energy')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.legend()
plt.show()
```
这些只是示例,实际上,数据可视化的方法和工具有很多,我们可以根据具体情况选择最合适的方法和库来进行分析和展示。
阅读全文