python导入csv数据画图(python读取csv文件)
python怎么导入csv文件
python中有一个读写csv文件的包,直接import
csv即可。利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下。
读文件
csv_reader
=
csv.reader(open('data.file',
encoding='utf-8'))
for
row
in
csv_reader:
print(row)
用Python画图
今天开始琢磨用Python画图,没使用之前是一脸懵的,我使用的开发环境是Pycharm,这个输出的是一行行命令,这个图画在哪里呢?
搜索之后发现,它会弹出一个对话框,然后就开始画了,比如下图
第一个常用的库是Turtle,它是Python语言中一个很流行的绘制图像的函数库,这个词的意思就是乌龟,你可以想象下一个小乌龟在一个x和y轴的平面坐标系里,从原点开始根据指令控制,爬行出来就是绘制的图形了。
??它最常用的指令就是旋转和移动,比如画个圆,就是绕着圆心移动;再比如上图这个怎么画呢,其实主要就两个命令:
turtle.forward(200)
turtle.left(170)
第一个命令是移动200个单位并画出来轨迹
第二个命令是画笔顺时针转170度,注意此时并没有移动,只是转角度
然后呢? 循环重复就画出来这个图了
好玩吧。
有需要仔细研究的可以看下这篇文章 ,这个牛人最后用这个库画个移动的钟表,太赞了。
Turtle虽好玩,但是我想要的是我给定数据,然后让它画图,这里就找到另一个常用的画图的库了。
Matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。
使用起来也挺简单,
首先import matplotlib.pyplot as plt?导入画图的图。
然后给定x和y,用这个命令plt.plot(x, y)就能画图了,接着用plt.show()就可以把图形展示出来。
接着就是各种完善,比如加标题,设定x轴和y轴标签,范围,颜色,网格等等,在 这篇文章里介绍的很详细。
现在互联网的好处就是你需要什么内容,基本上都能搜索出来,而且还是免费的。
我为什么要研究这个呢?当然是为了用,比如我把比特币的曲线自己画出来可好?
假设现在有个数据csv文件,一列是日期,另一列是比特币的价格,那用这个命令画下:
这两列数据读到pandas中,日期为df['time']列,比特币价格为df['ini'],那我只要使用如下命令
plt.plot(df['time'], df['ini'])
plt.show()
就能得到如下图:
自己画的是不是很香,哈哈!
然后呢,我在上篇文章 中介绍过求Ahr999指数,那可不可以也放到这张图中呢?不就是加一条命令嘛
plt.plot(df['time'], df['Ahr999'])
图形如下:
但是,Ahr999指数怎么就一条线不动啊,?原来两个Y轴不一致,显示出来太怪了,需要用多Y轴,问题来了。
继续谷歌一下,把第二个Y轴放右边就行了,不过呢得使用多图,重新绘制
fig = plt.figure() # 多图
ax1 = fig.add_subplot(111)
ax1.plot(df['time'], df['ini'], label="BTC price")? #?绘制第一个图比特币价格
ax1.set_ylabel('BTC price') #?加上标签
# 第二个直接对称就行了
ax2 = ax1.twinx()#?在右边增加一个Y轴
ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999")??#?绘制第二个图Ahr999指数,红色
ax2.set_ylim([0, 50])# 设定第二个Y轴范围
ax2.set_ylabel('ahr999')
plt.grid(color="k", linestyle=":")# 网格
fig.legend(loc="center")#图例
plt.show()
跑起来看看效果,虽然丑了点,但终于跑通了。
这样就可以把所有指数都绘制到一张图中,等等,三个甚至多个Y轴怎么加?这又是一个问题,留给爱思考爱学习的你。
有了自己的数据,建立自己的各个指数,然后再放到图形界面中,同时针对异常情况再自动进行提醒,比如要抄底了,要卖出了,用程序做出自己的晴雨表。
1 如何用Python导入Excel以及csv数据集
Excel是一个二进制文件,它保存有关工作簿中所有工作表的信息
CSV代表Comma Separated Values 。这是一个纯文本格式,用逗号分隔一系列值
Excel不仅可以存储数据,还可以对数据进行操作
CSV文件只是一个文本文件,它存储数据,但不包含格式,公式,宏等。它也被称为平面文件
Excel是一个电子表格,将文件保存为自己的专有格式,即xls或xlsx
CSV是将表格信息保存为扩展名为.csv的分隔文本文件的格式
保存在excel中的文件不能被文本编辑器打开或编辑
CSV文件可以通过文本编辑器(如记事本)打开或编辑
excel中会有若干个表单,每个表单都会这些属性:?
行数(nrows) 列数(ncols) 名称(name) 索引(number)?
import xlrd //执行操作前需要导入xlrd库?
#读取文件?
excel = xlrd.open_workexcel("文件地址") //这里表格名称为excel,文件的地址可以从文件的属性中看到?
#读取表格表单数量?
sheet_num= excel.nsheets // sheet_num为变量,其值为表格表单数量?
#读取表格表单名称?
sheet_name = excel.sheet_names() // sheet_name为变量,其值为表格表单名称?
#如果想要看到上述两个变量,可以使用print()函数将它们打印出来?
#想要读取某个表单的数据,首先获取表单 excel.sheet_by_index(0)?
//表单索引从0开始,获取第一个表单对象 excel.sheet_by_name('xxx')?
// 获取名为”xxx”的表单对象 excel.sheets()?
// 获取所有的表单对象 获取单元格的内容:使用cell_value 方法 这里有两个参数:行号和列号,用来读取指定的单元格内容。?
第一行的内容是:sheet.row_values(rowx=0)?
第一列的内容是:sheet.col_values(colx=0)
CSV是英文Comma Separate Values(逗号分隔值)的缩写,文档的内容是由 “,” 分隔的一列列的数据构成的。在python数据处理中也经常用到。
import csv //执行操作前需要导入csv库?
#csv读取?
遍历其中数据 csv_file = csv.reader(open(‘文件地址’,’r’)) for x in csv_file print(x)
python导入csv并利用其中数据画图
昨天手机看的,没看到你发的表格,抱歉。给你写个简单的。
import pandas
import matplotlib.pyplot as plt
# sep这是是分割符,具体看你自己的文件分割是用什么,usecoles是取a,b,c三列
a_b_c = pandas.read_csv("这里写你的文件地址", sep="\t", usecols=[1,2,3])
# 取c在3000到10000的行
a = a_b_c[(a_b_c['c']=3000) (a_b_c['c']=10000)]
a_col = a["a"]
b_col = a["b"]
plt.scatter(a_col, b_col)
plt.show()
流程大概是这样,具体需要细化的地方看官方文档或者百度查询。
说说如何利用 Python 处理 CSV 文件
CSV 表示 “Comma-Separated Values (逗号分隔的值) ” , CSV 文件是简化的电子表格,实际为纯文本文件。
一个 CSV 文件,格式是这样的:
因为 CSV 文件中的每个单元格都是以逗号分割,所以也许有人会对每行文本调用 split() 方法,来解析 CSV 文件。但 CSV 文件也有自己的转义字符,通过转义字符,允许逗号和其他字符作为值的一部分,但单纯使用 split() 方法不能处理这些转义字符。因为这些潜在的缺陷,所以建议总是使用 csv 模块来读写 CSV 文件。
csv 模块是 Python 自带的,所以可以直接导入。
要使用 csv 模块从 CSV 文件中读取数据,我们需要创建一个 Reader 对象。 通过 Reader 对象,我们可以迭代遍历 CSV 文件中的每一行内容。
运行结果:
要用 csv 模块读取 CSV 文件,首先先使用 open() 函数打开它 ,就像打开任何其他文本文件一样。然后将它传递给 csv .reader() 函数。 这个函数将返回一个 Reader 对象。注意,csv .reader() 函数不接受文件名作为入参。
要访问 Reader 对象中的值,最直接的方法,就是利用 list() 将它转换成一个普通 Python 列表。它实际为一个包含列表的列表,用于表示二维数据。
我们还可以使用表达式 data [ row ][ col ] 来访问 CSV 中特定行和列的值。其中, row 是 data 中一个列表的下标, col 是该列表中,我们想访问的项的下标:
运行结果:
运行结果:
Writer 对象可以让我们把数据写入 CSV 文件。
运行结果:
在 Windows 上,需要为 open() 函数的 newline 关键字参数传入一个空字符串。如果没有设置 newline 参数, output.csv 中的行距将变为两倍,如下图所示。
如果写入的内容包含逗号,那么 csv 模块会自动加上双引号,对其进行转义,如下例所示。
运行结果:
我们也可以利用 delimiter ,来制作 TSV 文件,TSV 是Tab-separated values的缩写,即以制表符作为分隔符的文件;利用 lineterminator 参数来设定行距。
运行结果:
这里利用 lineterminator='\n\n\n' 将行与行之间的字符变为三个换行符,效果就是实现了 3 倍行距。