python对CSV、Excel、txt
一、CSV文件读写
1、读取
1.1基于python csv库
#3.读取csv至字典x,y
import csv
# 读取csv至字典
csvFile = open(r'G:\训练小样本.csv', "r")
reader = csv.reader(csvFile)
#print(reader)
# 建立空字典
result = {}
i=0
for item in reader:
if reader.line_num==1:
continue
result[i]=item
i=i+1
# 建立空字典
j=0
xx={}
yy={}
for i in list(range(29)):
xx[j]=result[i][1:-1]
yy[j]=result[i][-1]
# print(x[j])
# print(y[j])
j=j+1
csvFile.close()
##3.1字典转换成list
X=[]
Y=[]
for i in xx.values():
X.append(i)
for j in xx.values():
X.append(j)
改进的CSV读取,直接从CSV文件读取到 list:
#加载数据
def loadCSV(filename):
dataSet=[]
with open(filename,'r') as file:
csvReader=csv.reader(file)
for line in csvReader:
dataSet.append(line)
return dataSet
读取的方式,是一行一行读取。
1.2 pandas读取
import pandas as pd
test_df = pd.read_csv(r'G:\test_linearRegression.csv', sep = '\t', header = None)
2、写入
import csv
#程序三
with open(r'G:\0Pythonstudy\chengxu\test.csv','w',newline='') as myFile:
myWriter=csv.writer(myFile)
myWriter.writerow([7,'g'])
myWriter.writerow([8,'h'])
myList=[[1,2,3],[4,5,6]]
myWriter.writerows(myList)
# myFile.close()
with open(r'G:\0pythonstudy\chengxu\test.csv',"r") as data:
result=csv.reader(data)
for item in result:
print(item)
写入,如果纯用 open(r’G:\0pythonstudy\chengxu\test.csv’,‘w’),就会出现多出一空行。
二、excel文件处理
1、读取
方法一:
使用Python的 xlrd包。
#1、导入模块
import xlrd
#2、打开Excel文件读取数据
data = xlrd.open_workbook('test_data.xlsx')
# print('data',data)
#3、使用技巧
#获取一个工作表
table = data.sheets()[0] #通过索引顺序获取
# print('table',table)
print(table.nrows)#table 行数
print(table.ncols)
table = data.sheet_by_index(0) #通过索引顺序获取
# print('table',table)
table = data.sheet_by_name(u'Sheet1')#通过名称获取
# 获取整行和整列的值(数组)
i=1
print(table.row_values(i))#获得第i行数据
print(table.col_values(i))#获得第i列数据
运行结果:
9
2
[2.0, 6.0]
[5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0]
方法二:
或者,可以把Excel文件转换成csv格式文件,直接修改后缀名,好像会出错,还是建议另存为修改成csv文件。
方法三:
使用pandas包
import pandas as pd
test_df = pd.read_excel(r'G:\test.xlsx')
pandas
读取为dataframe
格式,其中dataframe.values
是nparray
格式,nparray.tolist()
是python list
格式。
注意:pandas和 xlrd的区别在于,pandas会把第一行和第一列作为索引的表头;xlrd则会把所有的数据都读取,没有索引表头一说。
三、dat文件处理
直接读取
c = np.fromfile('test2.dat', dtype=int)
或者,把 .dat 文件修改成 .txt格式文件。
这里可以参考 python批量更改文件后缀名 一文。
四、txt文件处理
a = numpy.loadtxt('odom.txt')
a [[ 2.49870000e-01
2.50250000e-01
[ 3.64260000e+03
3.72430000e+03
[ 4.53960000e+03
4.50590000e+03
...,
[ 4.74110000e+01
4.89660000e+01
[ 4.10930000e+01
4.20480000e+01
[ 1.83510000e+01
1.68250000e+01
a.shape (52, 500)
Reference:
- Python csv模块;
- python_xlrd对Excel处理;
- python : 将txt文件中的数据读为numpy数组或列表;
- pandas read_csv api官网;
相关文章