使用Plotly进行交互式数据分析

时间:2024-12-20 14:38:08

环境准备

首先确保你已经安装了pandasplotly库。如果没有,可以通过pip安装:

pip install pandas plotly

示例代码

我们将继续使用之前提到的销售数据,并用Plotly来创建一些交互式的图表。

import pandas as pd
import plotly.express as px

# 创建一个虚拟的销售数据表
data = {
    'Date': ['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04', '2024-01-05'],
    'Product': ['Apple', 'Banana', 'Orange', 'Apple', 'Banana'],
    'Sales': [120, 80, 70, 130, 90]
}

# 将字典转换为DataFrame
df = pd.DataFrame(data)

# 将'Date'列转换为日期格式
df['Date'] = pd.to_datetime(df['Date'])

# 设置索引为日期
df.set_index('Date', inplace=True)

# 打印前几行以检查数据
print("原始数据:")
print(df.head())

# 使用Plotly绘制每个产品的销售柱状图
fig_bar = px.bar(df.reset_index(), x='Product', y='Sales', color='Product',
                 title='Total Sales by Product', labels={'Sales': 'Total Sales'},
                 hover_data=['Date'])
fig_bar.show()

# 计算每个产品的累计销售额
df['Cumulative_Sales'] = df.groupby('Product')['Sales'].cumsum()

# 使用Plotly绘制每个产品的累计销售折线图
fig_line = px.line(df.reset_index(), x='Date', y='Cumulative_Sales', color='Product',
                   title='Cumulative Sales Over Time', labels={'Cumulative_Sales': 'Cumulative Sales'})
fig_line.show()

代码解析

  1. 创建数据:我们构造了一个包含日期、产品名称和销售量的小型数据集。
  2. 转换为DataFrame:使用pd.DataFrame()方法将Python字典转换为Pandas DataFrame对象。
  3. 日期处理:利用pd.to_datetime()函数将字符串形式的日期转换为日期时间格式,这有助于后续的时间序列分析。
  4. 设置索引:通过set_index()方法把日期设置为DataFrame的索引,便于基于时间的操作。
  5. 使用Plotly绘制柱状图
  • px.bar()用于创建柱状图,这里我们指定了x轴为产品名,y轴为销售额,并设置了颜色区分不同产品。
  • hover_data参数添加了悬停时显示的数据信息。
  1. 计算累计销售额:通过groupby()结合cumsum()计算每个产品的累计销售额。
  2. 使用Plotly绘制折线图
  • px.line()用于创建折线图,展示了每个产品随时间变化的累计销售额。

Plotly的优势

  • 交互性:用户可以放大查看特定时间段内的数据,悬停在点上查看详细信息等。
  • 美观度:默认样式非常吸引人,适合制作报告或演示文稿。
  • 灵活性:支持多种图表类型(如散点图、热力图、3D图表等),并能轻松定制图表外观。
  • 易于分享:可以直接嵌入网页中,或者导出为HTML文件与他人分享。

通过这个例子,我们展示了如何使用Plotly快速创建交互式图表,使得数据分析结果更加生动且易于理解。如果你对其他类型的图表或更高级的功能感兴趣,请告诉我,我可以进一步深入讲解!