python数据导入之导入各类文件方法 

01、csv的导入方法

1、如果数据是很规范的那种的话,而且文件不算太大的话,可以用以下代码导入即可:

import pandas as pd
csv_data = pd.read_csv(filename)
#没有特殊分隔符,就用这一句,
df = pd.read_csv(filename,';')
#如果有特殊分隔符,就用这一句
df = pd.read_csv(filename,';',encoding='GBK')
#如果有特殊分隔符,就用这一句,还有编码问题,就用这一句

 

2、适合数据量大,且你需要在导入的每行中再批量处理每一行的数据

import csv
filename='/Users/Betty/Desktop/data_output.csv'
data = []
with open(filename,'r') as csvfile:
    csv_reader = csv.reader(csvfile)  # 使用csv.reader读取csvfile中的文件
    data_name = next(csv_reader)  # 读取第一行每一列的标题
    for row in csv_reader:  # 将csv 文件中的数据保存到data中
        data.append(row)
    
df = pd.DataFrame(data[1:], columns=data_name) #转成dataframe

3、如果你的数据量特别大,一启动就怕卡机,那可以先用代码看下每一行长什么样子,测试下数据处理的步骤,

可以用以下代码,只读一行:

import csv
with open('data.csv', 'r') as f:
     reader = csv.reader(f)
     result = list(reader)
     print(result[1])

4、如果你的数据纬度很多,不想读那么多列,可以用以下方式读其中一列或者多列

import csv
with open('A.csv','rb') as csvfile:
    reader = csv.reader(csvfile)
    column = [row[2] for row in reader]#读其中的第2列的数据

5、那么假设你拿到的数据是那种json格式放在csv里面的怎么办

import csv
filename='/Users/Betty/Desktop/data_output.csv'
data = []
with open(filename,'r') as csvfile:
    csv_reader = csv.reader(csvfile)  # 使用csv.reader读取csvfile中的文件
    data_name = next(csv_reader)  # 读取第一行每一列的标题
    for row in csv_reader:  # 将csv 文件中的数据保存到data中
        row=json.loads(row)#在第一种方法的基础上,加上解析的语句,其他类型的放在csv也是同样的道理
        data.append(row)

02、txt导入方法

1、txt也可以一句话读,但是读进来的数据会变成一个str格式的数据,假设你的数据是一段话,那么可以用这个方法要是是一行一行的文本数据,你就乖乖上面用哪个中一行一行读的,你的数据是数值数据可以用loadtxt读

with open("/Users/Betty/Downloads/train.txt", "r") as f:
    data=f.read()

你的数据是数值数据可以用loadtxt读,直接是一个dataframe

import numpy as np    
data=np.loadtxt("/Users/Betty/Downloads/train.txt")

2、但是你还是觉得上面的方法很麻烦,那就可以用pandas导入,这个方法的导入直接就是dataframe(),适合不需要怎么特殊处理,毕竟规整的数据。

import pandas as pd
data=pd.read_table("/Users/Betty/Downloads/train.txt")

3、如果你的数据量特别大,那么就需要用open了,因为上面哪种方法,数据量大一点就会很卡,很卡,很卡,那么这里要注意readline和readlines的区别,readline是读一行,在with open 下面第一句,意味着,txt数据第一行为变量名,可以用这个语句保留变量名,等下你转dataframe的时候可以用。readlines则读的是多行,所以需要for循环出数据  

with open("test.txt", "r") as f:
    title_name = f.readline()
    for line in f.readlines():
        line = line.strip('\n')  #去掉列表中每一个元素的换行符
        print(line)

03、xls导入方法 

1、这种方法适合你只有一个sheet,读进去直接就是dataframe。

import pandas as pd
data=pd.read_excel('/Users/Betty/Downloads/excel2 (1).xls')

2、这个适合多个sheet,这里就基本语句,要循环,要变成函数,你就自己再加工哈。xls格式的表格,因为会涉及多个sheet,所以导入数据时,会麻烦一点点。

import xlrd
data = xlrd.open_workbook('/Users/Betty/Downloads/excel2 (1).xls')
data.sheet_names()#这个语句可以查看全部sheet的名字,生成一个list
table = data.sheet_by_name('选择题')# 通过文件名获得工作表,获取工作表1
data_total=[]
for k in range(table.nrows):
    data_total.append(table.col_values(k))#循环全部的行,追加成一个list