Python根据csv绘制多折线图(内含批量读取+自定义坐标标签+阴影处理)
实现功能
1.从csv中读取数据
2.数据清洗(大小超出范围的异常值处理)
3.数据累积处理(将每日数据处理为历史累积值)
4.绘制多折线图
0.导入相关包import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
1.从csv格式文件中读取数据
#设置相关文件筛选条件
site='3'
band="NDVI"
sentinel="2-L2A"
#设置路径
path= '../data/dataset/Train_region_csv/S{}/csv/{}-{}.csv'.format(sentinel,site, band)
#从csv中读取数据存为dataframe,index_col为选择原数据集中的某列作为返回的DataFrame的行标签的列
pixel_csv = pd.read_csv(path, index_col = 0)
拓展:批量读取csv文件,存储为DataFrame格式
(1)从文件夹中读取 全部 / 指定部分文件名 的文件
import globsentinel = "2-L2A"
site = '3'
path= '../data/dataset/Train_region_csv/S{}/csv/'.format(sentinel)
#从路径中,读取所有csv格式的文件,返回含有所有csv格式文件名路径的列表file
file = glob.glob(os.path.join(path,"*.csv"))
file_3 = glob.glob(os.path.join(path,"3-*.csv")) #文件名为3-xxx
file_x = glob.glob(os.path.join(path,"{}-*.csv".format(site))) #文件名为变量site的值-xxx
print("file length:",len(file)) #读取到的文件数量
print(file)
(2)批量读取
list2dataframe=[]
for path_file in file:list2dataframe.append(pd.read_csv(path_file,index_col = 0))
#假设file中有8个csv文件的路径,则list2dataframe中存放8个对应的dataframe格式的数据
(3)整合(1)(2),封装为函数
def Dataloading_csv (folder_path):
#提取folder_path文件夹下的csv文件,存为Dataframe格式,返回个文件的dataframe的列表site='3'file = glob.glob(os.path.join(folder_path,"{}-*.csv".format(site)))list2dataframe=[]for path_file in file:list2dataframe.append(pd.read_csv(path_file,index_col = 0))return list2dataframe
2.数据清洗-删除超过范围的异常值
for j in range(pixel_csv.shape[1]):#dataframe的列数for i in range(pixel_csv.shape[0]):#dataframe的行数# 对大于1或小于0的异常值,设为空值nanif (pixel_csv.iloc[i,j]> 1 or pixel_csv.iloc[i,j] < 0):pixel_csv.iloc[i,:]=np.nan
3.数据处理-将每日数据处理为历史累积值
#列为日期,行为各项数据for j in range(1,pixel_csv.shape[1]): #第一天不需要做累积处理,从第二天(第二列)开始for i in range(pixel_csv.shape[0]):x=pixel_sum.iloc[i,j]pixel_sum.iloc[i,j]=x+pixel_sum.iloc[i,j-1]
4.绘制多折线图
对DataFrame使用describe函数,获得DataFrame的初步统计信息,其中包含min,max,mean
def plot_min_max_mean(data_desc):fig=plt.figure()ax=fig.add_subplot(1,1,1)ax.plot(data_desc.index, data_desc.iloc[:,7],color='crimson',label='Max')#maxax.plot(data_desc.index, data_desc.iloc[:,1],color='c',label='Mean')#meanax.plot(data_desc.index, data_desc.iloc[:,3],color='royalblue',label='Min')#min#设置x坐标轴的刻度信息ax.set_xticks([0,12,25,37,49,62,74,84])#第0,12,25...等位置划分一个刻度ax.set_xticklabels(['04-01', '05-01', '06-01', '07-01', '08-01', '09-01','10-01','11-01'],rotation=45,fontsize=12)#设置刻度标签:名称、旋转角度、字体大小、颜色等plt.title('Site-3',fontsize=16)#设置图题plt.xlabel('Dates',fontsize=14)#设置x轴名称plt.ylabel('EVI',fontsize=14)#设置y轴名称plt.fill_between(data_desc.index, data_desc.iloc[:,7], data_desc.iloc[:,3], facecolor="orange",alpha=0.1)#在min和max两条曲线内设置阴影、颜色、透明度plt.legend()plt.show()
Python根据csv绘制多折线图(内含批量读取+自定义坐标标签+阴影处理)相关推荐
- Python使用Matplotlib绘制三维折线图(进阶篇)
1.0简介: 三维图像技术是现在国际最先进的计算机展示技术之一,任何普通电脑只需要安装一个插件,就可以在网络浏览器中呈现三维的产品,不但逼真,而且可以动态展示产品的组合过程,特别适合远程浏览. 立体图 ...
- python ggplot画等值线图,是否可以在Python ggplot上绘制多折线图?
I need to plot 3 columns of a Pandas dataframe on python ggplot, with the same index. Is that possib ...
- [转载] Python数据可视化库-Matplotlib——折线图绘制
参考链接: Python Matplotlib数据可视化 plot折线图 # coding:utf-8 import pandas as pd import numpy as np from matp ...
- python画折线图显示点值-Python 绘制可视化折线图
1. 用 Numpy ndarray 作为数据传入 ply import numpy as np import matplotlib as mpl import matplotlib.pyplot a ...
- python画折线图代码-python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
- python画折线图详解-python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
- matplotlib 折线图_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图
今天咱们还是接着上次的话题,继续和大家聊聊关于Python绘图相关的东东哦,上次已经和大家讨论完了如何给自己所绘制的图表中添加装饰线以及修改装饰线密度的方法,今天呢,咱们再聊点的新的东东哦,还是和大家 ...
- python绘制折线图显示数据_漂亮图表也可用python信手拈来!一文教你学会用Python绘制堆积折线图...
今天,和大家聊聊关于Python绘图相关的东东哦,还是和大家继续深耕Python经典的matplotlib库哦! 好啦,咱们就开始吧! 首先,咱们聊聊如何在Python中去绘制经典的堆积折线图 到这可 ...
- 中绘制折线_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图
今天咱们还是接着上次的话题,继续和大家聊聊关于Python绘图相关的东东哦,上次已经和大家讨论完了如何给自己所绘制的图表中添加装饰线以及修改装饰线密度的方法,今天呢,咱们再聊点的新的东东哦,还是和大家 ...
最新文章
- 1-2 Zabbix web界面支持中文
- linux远程桌面复制文件,SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面...
- 5.springMVC数据回显(就是后台向页面传参的过程)
- 使用maven一步一步构建spring mvc项目
- java contions_Java基础---数组总结
- C语言嵌入系统编程修炼-性能优化
- 通用权限管理设计 之 数据权限
- 거든---表示条件,后接祈使,劝诱,意志语句
- 怎么用python做我的世界皮肤_我的世界换肤教程 皮肤的制作使用
- 余额宝不是吸血鬼,银行才是
- C# Ftp创建文件夹
- 跨省市跳槽,社保公积金处理办法
- peer channel create解析
- 怎么把html在别人电脑上打开文件,html文件怎么打开?电脑用浏览器打开html文件的方法...
- Java学习路线·进阶
- 渗透测试 | IP信息收集
- 干货 | 一文读懂数据分析
- 华为5面,测试岗报价12k,面试官说我不尊重华为,他们没有那么低的薪资?
- 基于全卷积神经网络的前列腺磁共振图像分割
- php artisan command,php artisan命令