如何合并光敏传感器数据至DataFrame以实现Plotly绘图?
合并多CSV文件为DataFrame并使用Plotly绘图
步骤1:加载并合并CSV数据
假设你的每个CSV文件都包含PWM列和对应的传感器读数列(比如默认列名为Value),我们可以通过按PWM列匹配的方式,将所有数据整合到同一个DataFrame中,替代手动创建空列的低效方式。
修改后的完整代码如下:
import pandas as pd import plotly.express as px def main_code(): # 定义要加载的文件与对应列名映射 sensor_config = { 'sens_00': 'sens_00.csv', 'sens_06': 'sens_06.csv', 'sens_12': 'sens_12.csv', 'sens_18': 'sens_18.csv', 'sens_23': 'sens_23.csv' } # 初始化合并DataFrame:先加载第一个文件并重命名读数列 merged_df = pd.read_csv(sensor_config['sens_00'], sep=';') merged_df.rename(columns={'Value': 'sens_00'}, inplace=True) # 遍历剩余文件,按PWM列合并 for col_name, file_path in list(sensor_config.items())[1:]: temp_df = pd.read_csv(file_path, sep=';') temp_df.rename(columns={'Value': col_name}, inplace=True) # 内连接确保仅保留所有文件都存在的PWM值,若需保留全部PWM可改用how='outer' merged_df = pd.merge(merged_df, temp_df, on='PWM', how='inner') print("合并后的数据预览:") print(merged_df.head()) # 步骤2:用Plotly绘制多曲线对比图 # 将宽格式数据转为长格式,适配Plotly批量绘图逻辑 long_format_df = merged_df.melt( id_vars='PWM', var_name='灵敏度等级', value_name='传感器读数' ) fig = px.line( long_format_df, x='PWM', y='传感器读数', color='灵敏度等级', title='光敏传感器不同灵敏度等级的PWM响应曲线', labels={'PWM': 'PWM值(0-65000)'}, range_x=[0, 65000] ) fig.show() if __name__ == '__main__': main_code()
关键细节说明
- 合并逻辑:通过
pd.merge按PWM列对齐数据,避免手动填充空列的错误。如果你的CSV读数列不是Value,请替换为实际列名。 - 长格式转换:
melt函数将宽格式数据转为长格式,让Plotly自动按灵敏度等级区分曲线颜色,无需手动添加单条轨迹。 - 绘图配置:通过
range_x强制X轴范围为0-65000,同时添加中文标签提升可读性。
可选调整项
- 若部分CSV文件的PWM值不全,可将
pd.merge的how参数改为outer,保留所有PWM值,缺失数据会自动填充为NaN。 - 若CSV文件分隔符不是
;,需在pd.read_csv中单独指定sep参数。
内容的提问来源于stack exchange,提问作者MrExplore
相关产品推荐
相关产品推荐

