概述
方法一 Numpy.genfromtxt读取csv文件
简介
数据文件的一种非常常见的文件格式是逗号分隔值(CSV)或相关格式,例如TSV(制表符分隔值)。 要将数据从此类文件读取到Numpy数组中,我们可以使用numpy.genfromtxt函数。
例子1:
>>> import numpy as np
>>> data = np.genfromtxt('data.csv',delimiter=',') #delimiter: 用于分隔的str
>>> data[0:3,]
array([[32.50234527, 31.70700585],
[53.42680403, 68.77759598],
[61.53035803, 62.5623823 ]])
例子2:
为了得到我们需要的有用数据,我们有两个硬的要求: (1) 跳过表头信息;(2) 区分横纵坐标。
import numpy as np
data = np.genfromtxt('waveform.txt',delimiter=',',skip_header=18)
**delimiter: the str used to separate data. 横纵坐标以 ',' 分割,因此给 delimiter 传入 ','。
. 有用数据是从19行开始的,因此给 skip_header 传入 18。
print data[0:3,0], data[0:3,1]
因为读入的是二维数据,因此利用 numpy 二维数据的切片方式 (Index slicing) 输出各自的前三个数据验证是否读取正确:
[ 2.40000000e-08 2.40001230e-08 2.40002470e-08]
[ 0.014349 0.016005 0.015455]
对数据进行归一化处理后,调用 Matplotlib 画图命令,就可得到图像如下:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(figsize=(8,6))
axes.plot(x, y, 'r', linewidth=3)
axes.set_xlabel('Time(ps)')
axes.set_ylabel('Amplitude[a.u.]')
fig.savefig("triangular.png", dpi=600)
三角波
例子3:
__author__ = 'tum'
import numpy as np
#一个最简单的例子
f = open('test.csv', 'w')
f.write("1,1.2,1.3n2,2.2,2.3")
f.close()
a = np.genfromtxt('test.csv', dtype=[('myint','i8'),('myfloat','f8'), ('mystring','U5')], delimiter=",", comments='#')
print (a)
#字段中有中文,成功!
def conv_str_chs(x):
# print(x)
return x.decode('gb2312')
f = open('test.csv', 'w')
f.write("1,1.2,今123天n2,2.2,789天")
f.close()
a = np.genfromtxt('test.csv', dtype=[('myint','i8'),('myfloat','f8'), ('mystring','U5')], delimiter=",", comments='#',
converters={2:conv_str_chs})
print (a)
#空缺部分字段, 使用默认填充。文档中描述:
# Expected type Default
# bool False
# int -1
# float np.nan
# complex np.nan+0j
# string '???'
f = open('test.csv', 'w')
f.write(",,")
f.close()
a = np.genfromtxt('test.csv', dtype=[('myint','i8'),('myfloat','f8'), ('mystring','U5')], delimiter=",", comments='#',
filling_values={0:9, 1:9.9, 2:'abc'})
print (a)
运行结果输出:
[(1, 1.2, '1.3') (2, 2.2, '2.3')]
[(1, 1.2, '今123天') (2, 2.2, '789天')]
(9, 9.9, '')
方法二 实用csv.reader读取csv文件
1.基本的读取文件的方式
import csv
csv_reader=csv.reader(open('taxi.csv',encoding='utf-8'))
for row in csv_reader:
print(row)
#taxi.csv最好放在同一目录下
2.读取文件中的某一列以及多列‘
import csv
with open('taxi1.csv',encoding='utf-8') as csvfile:
reader=csv.reader(csvfile)
column=[row[2] for row in reader]
print(column)
####方法2
data_x= pd.read_csv(filepath_or_buffer = 'taxi1.csv', sep = ',')["lo"].values
data_y= pd.read_csv(filepath_or_buffer = 'taxi1.csv', sep = ',')["la"].values
3.读取文件的某一行
import csv
with open('taxi1.csv',encoding='utf-8') as csvfile:
reader=csv.reader(csvfile)
for i,rows in enumerate(reader):
if i==0:
row=rows
print(row)
###
['id', 'dest_no', 'lo', 'la', 'gps_time', 'status', 'speed', 'vehicle_type', 'taxi_no_color', 'dir', 'create_time']
4.读取文件的行数
import csv
a=open("taxi1.csv","r")
b=len(a.readline())
print(b)
希望对你有帮助。
最后
以上就是拼搏大米为你收集整理的【python的读取csv文件数据】 已解决的全部内容,希望文章能够帮你解决【python的读取csv文件数据】 已解决所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复