python打开csv文件绘制折线图_Python程序分析CSV文件并绘制趋势图,python,csv

写了一个读取csv文件(第一列是时间,其余列是一些要分析记录变化趋势的数值),其中第一列的时间有进2k行而且不是标准的时间格式。

import matplotlib.pyplot as plt

from numpy import genfromtxt

import pandas as pd

def draw(name,df,col):

totalSeed = df.index.tolist()

#将index作为x轴画图

fig = plt.figure()

ax = fig.add_subplot(111)

#设置x轴显示的间隔为150个值显示一个刻度,太多的话太密,这里如果是标准时间格式Dateframe的话可以用DayLocator或MonthLocator来设置每天/每月显示一个刻度

xticks=list(range(0,len(totalSeed),150))

xlabels=[totalSeed[x] for x in xticks]

xticks.append(len(totalSeed))

xlabels.append(totalSeed[-1])

ax.set_xticks(xticks)

ax.set_xticklabels(xlabels, rotation=40)

#设置x轴及旋转角度

plt.plot(df.index,df[col],linewidth=0.3)

#绘图,如果要吧多个折线绘制在一张图中则把每一中写一行plot,若是在一张画布上以多子图的形式展示多个趋势图则使用subplot。保存图片时如果先show再save的话会保存空白图片,原因是show之后plt便更换了新的画布

plt.savefig(name+ “-”+col +’.png’)

plt.show()

#plt.savefig(name + “-”+col + ‘.pdf’, format=‘pdf’)

plt.close()

df = pd.read_csv(’/Users/guxueshan/Desktop/jruby_day_commit.csv’)

#读取csv文件时默认将第一行作为列名。如果要设置读取规则或想更改列名或仅读取个别需要的列则这样写:df = pd.read_csv(文件路径, delimiter="|"(分隔符), lineterminator=’\n’(行分隔符),usecols=[ 0, 2](读取的列),names=[ ‘tr-build-id’, ‘gh-is-pr’](更改列名))

name = “jruby_day_commit”

for i in range(df.index.max() + 1):

for j in range(24):

#行列遍历每一个值进行数据清洗

if str(df.iat[i,j]) == “nan”:

df.iat[i,j] = 0

#设置index,默认是0开始的数值,这里是指定某一列

df.set_index(‘date’,inplace=True)

#设置print时输出所有列

pd.set_option(‘display.max_columns’, None)

#输出df的前20行

print(df[ :20 ])

#对每一列for循环

for index, row in df.iteritems():

draw(name,df,index)

你可能感兴趣的:(python打开csv文件绘制折线图_Python程序分析CSV文件并绘制趋势图,python,csv)