数据交换主要有以下几种类型:
在Pandas的使用场景中,最多的是将表格型的数据读取为DataFrame对象。实现这一功能的函数有很多,最常用的是read_csv
和read_table
。
1.
import pandas as pd ‘‘‘ a,b,c,d,message 1,2,3,4,hello 5,6,7,8,world 9,10,11,12,foo ‘‘‘ df = pd.read_csv(‘E:/test_resourse/ex1.csv‘) print(df)#默认第一行为列索引,自动生成了行索引 print(‘*‘*20) df2 = pd.read_table(‘E:/test_resourse/ex1.csv‘,sep=‘,‘) #指定分隔符为逗号: print(df2) print(‘*‘*20) df = pd.read_csv(‘E:/test_resourse/ex1.csv‘,header=None) #使用默认列名 print(df) print(‘*‘*20) df = pd.read_csv(‘E:/test_resourse/ex1.csv‘, names=[‘a‘,‘b‘,‘c‘,‘d‘,‘message‘]) # 自定义 print(df)
运行结果:
a b c d message 0 1 2 3 4 hello 1 5 6 7 8 world 2 9 10 11 12 foo ******************** a b c d message 0 1 2 3 4 hello 1 5 6 7 8 world 2 9 10 11 12 foo ******************** 0 1 2 3 4 0 a b c d message 1 1 2 3 4 hello 2 5 6 7 8 world 3 9 10 11 12 foo ******************** a b c d message 0 a b c d message 1 1 2 3 4 hello 2 5 6 7 8 world 3 9 10 11 12 foo
2.如果你想将上面的message列当作DataFrame的行索引,可以将它传递给参数index_col:
#names指定列名 将messge作为行索引 df = pd.read_csv(‘E:/test_resourse/ex1.csv‘,names=[‘a‘,‘b‘,‘c‘,‘d‘,‘message‘],index_col=‘message‘) print(df) print(‘*‘*20)
运行结果:
a b c d message message a b c d hello 1 2 3 4 world 5 6 7 8 foo 9 10 11 12
3.如果想读取成分层索引,则需要为index_col参数传入一个包含列序号或列名的列表:
# key1,key2,value1,value2 # one,a,1,2 # one,b,3,4 # one,c,5,6 # one,d,7,8 # two,a,9,10 # two,b,11,12 # two,c,13,14 # two,d,15,16 #读取分层索引 类似多级索引 df = pd.read_csv(‘E:/test_resourse/csv_mindex.csv‘,index_col=[‘key1‘,‘key2‘]) print(df)
运行结果:
value1 value2 key1 key2 one a 1 2 b 3 4 c 5 6 d 7 8 two a 9 10 b 11 12 c 13 14 d 15 16
4.可以使用skiprows来跳过数据中的指定行
# hey! # a,b,c,d,message # just wanted to make things more difficult for you # who reads CSV files with computers, anyway? # 1,2,3,4,hello # 5,6,7,8,world # 9,10,11,12,foo # 使用skiprows来跳过数据中的指定行. 跳过无用的1,3,4行 df = pd.read_csv(‘E:/test_resourse/ex4.csv‘,skiprows=[0,2,3]) print(df)
运行结果:
a b c d message 0 1 2 3 4 hello 1 5 6 7 8 world 2 9 10 11 12 foo
5.缺失值的处理
# something a b c d message # one 1 2 3 4 NA # two 5 6 8 world # three 9 10 11 12 foo result = pd.read_csv(‘E:/test_resourse/ex5.csv‘,na_values=[3.0]) print(result) #将3.0也看作缺失值对待 print(‘*‘*20)
f = {‘message‘:[‘foo‘,‘NA‘],‘something‘:[‘two‘]} result = pd.read_csv(‘E:/test_resourse/ex5.csv‘,na_values=f) print(result) #甚至可以对不同的列,指定不同的缺失值标识:
运行结果:
something a b c d message 0 one 1 2 NaN 4 NaN 1 two 5 6 NaN 8 world 2 three 9 10 11.0 12 foo ******************** something a b c d message 0 one 1 2 3.0 4 NaN 1 NaN 5 6 NaN 8 world 2 three 9 10 11.0 12 NaN
原文:https://www.cnblogs.com/lishanstudy/p/12845726.html