写点什么

『Plotly 实战指南』-- 折线图绘制基础篇

  • 2025-03-18
    福建
  • 本文字数:2449 字

    阅读完需:约 8 分钟

在数据分析的世界中,折线图是一种不可或缺的可视化工具。


它能够清晰地展示数据随时间或其他变量的变化趋势,帮助我们快速发现数据中的模式、趋势和异常。


无论是金融市场分析、气象数据监测,还是业务增长趋势预测,折线图都能以直观的方式呈现关键信息。


本文将从基础开始,介绍如何使用 Plotly 库来绘制折线图,并掌握数据预处理的关键技巧。


1. 单条折线轻松绘制


1.1. 时间序列数据准备


时间序列数据是折线图中最常见的数据类型之一,它以时间为索引,记录了某个变量在不同时间点的值。


时间序列数据的特点是数据点之间具有时间顺序,这种顺序使得数据能够反映变量随时间的变化趋势。


时间序列数据可以通过多种方式获取,例如从数据库中提取、从 API 接口获取,或者直接生成模拟数据。


以下是一个简单的示例代码,展示如何生成测试用的时间序列数据:


import pandas as pdimport numpy as np
# 创建时间序列索引date_range = pd.date_range(start='2025-01-01', end='2025-01-31', freq='D')
# 生成随机数据data = np.random.randn(len(date_range))
# 创建DataFramedf = pd.DataFrame(data, index=date_range, columns=['Value'])print(df)
复制代码


在上面的代码中,我们使用pandas库生成了一个时间序列索引,并创建了一个包含随机值的DataFrame


其中索引为时间戳,列名为数据值。


1.2. 绘制单折线图


在绘制折线图之前,我们需要将数据导入到Plotly中。


Plotly通常使用pandasDataFrame作为数据输入格式。


以下代码展示如何使用Plotly绘制单条折线图:


import plotly.express as px
# 使用Plotly绘制折线图fig = px.line(df, x=df.index, y='Value', title='单条折线图示例')
# 展示图表fig.show()
复制代码



在上述代码中,我们使用plotly.express模块中的line函数来绘制折线图。


x参数指定了时间轴,y参数指定了数据值,title参数用于设置图表的标题。


2. 折线图数据预处理技巧


在绘制折线图之前,数据预处理是一个关键步骤。


数据预处理的目的是清理数据中的噪声、处理缺失值和异常值,并将数据转换为适合Plotly绘制的格式。


2.1. 数据清洗与去噪


在实际应用中,数据往往存在缺失值、异常值和噪声等问题。


这些问题会影响图表的准确性和可读性,因此在绘制折线图之前,我们需要对数据进行清洗和去噪。


1、识别并处理缺失值


缺失值是数据中常见的问题之一,处理缺失值的方法包括删除缺失值、填充缺失值等。


# 检查缺失值print(df.isnull().sum())
# 填充缺失值df.ffill(inplace=True) # 前向填充# df.bfill(inplace=True) # 后向填充# df.fillna(value=0, inplace=True) # 填充为特定值
复制代码


在上述代码中,我们使用pandas的方法来处理缺失值。


ffill表示前向填充,即用前一个非缺失值填充当前缺失值;


bfill表示后向填充,即用后一个非缺失值填充当前缺失值;


value=0 表示使用fillna将缺失值填充为 0。


2、检测并修正异常值


异常值是指数据中明显偏离正常范围的值。


异常值可能会影响图表的趋势和准确性,因此我们需要检测并修正异常值。


# 检测异常值mean = df['Value'].mean()std = df['Value'].std()threshold = 3  # 设置阈值outliers = df[(df['Value'] > mean + threshold * std) | (df['Value'] < mean - threshold * std)]
print("异常值:")print(outliers)
# 修正异常值df.loc[outliers.index, 'Value'] = mean
复制代码


在上述代码中,我们使用了均值和标准差的方法来检测异常值。


如果某个值偏离均值超过 3 倍标准差,则将其视为异常值。


最后,我们将异常值修正为均值。


2.2. 数据去噪方法


数据噪声是指数据中的随机波动,这些波动可能会影响图表的趋势和可读性。


常见的数据去噪方法包括简单移动平均法和滑动窗口去噪。


# 简单移动平均法去噪window_size = 3  # 设置滑动窗口大小df['Smoothed'] = df['Value'].rolling(window=window_size).mean()
# 绘制去噪后的折线图fig = px.line(df, x=df.index, y=['Value', 'Smoothed'], title='数据去噪效果对比')fig.show()
复制代码



在上述代码中,我们使用了rolling方法和mean方法来计算滑动窗口内的平均值,从而实现去噪。


window_size参数表示滑动窗口的大小。


运行这段代码后,将看到原始数据和去噪后数据的对比效果。


2.3. 数据格式转换与适配


Plotly通常要求数据以pandasDataFrame格式输入,其中索引为时间戳,列名为数据值。


因此,在绘制折线图之前,我们需要将数据转换为适合Plotly的格式。


1、从CSVPandas DataFrame


CSV文件中读取数据并转换为DataFrame是常见的数据处理步骤。


import pandas as pd
# 从CSV文件中读取数据df = pd.read_csv('data.csv', parse_dates=['Date'], index_col='Date')
df.head()
复制代码


在上述代码中,我们使用了pandasread_csv函数来读取CSV文件。


parse_dates=['Date']参数表示将Date列解析为时间戳,

index_col='Date'参数表示将Date列设置为索引。


2、从JSONPandas DataFrame


JSON文件中读取数据并转换为DataFrame也是常见的数据处理步骤。


以下是一个示例代码:


import pandas as pd
# 从JSON文件中读取数据df = pd.read_json('data.json', orient='records')
# 将时间戳列转换为索引df['Date'] = pd.to_datetime(df['Date'])df.set_index('Date', inplace=True)
df.head()
复制代码


在上述代码中,我们使用了pandasread_json函数来读取JSON文件。


orient='records'参数表示JSON文件的格式为记录格式。然后,我们将时间戳列转换为索引。


总的来说,在将数据转换为适合Plotly绘图的格式时,需要注意以下几点:


  • 时间戳格式统一:确保所有时间戳的格式一致,例如使用pd.to_datetime将时间戳转换为统一的格式

  • 数据类型转换:确保数据类型正确,例如将字符串类型的数据转换为数值类型

  • 索引与列名:确保索引为时间戳,列名为数据值


3. 总结


使用Plotly能够轻松绘制折线图。


在本文中,我们从基础的折线图绘制开始,然后逐步介绍了数据预处理技巧。


希望这些内容能帮助你在数据分析中更好地利用Plotly绘制折线图。


文章转载自:wang_yb

原文链接:https://www.cnblogs.com/wang_yb/p/18776125

体验地址:http://www.jnpfsoft.com/?from=001YH

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
『Plotly实战指南』--折线图绘制基础篇_plotly_不在线第一只蜗牛_InfoQ写作社区