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)

发布了7 篇原创文章 · 获赞 7 · 访问量 136

猜你喜欢

转载自blog.csdn.net/gxs_hhxx/article/details/104378156
今日推荐