【python的读取csv文件数据】 已解决

方法一 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.3\n2,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)

 

希望对你有帮助

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗小树x

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值