ふじさん春原庄的雪

Pandas文件读取

木子山13·2020-05-07 21:26·271 次阅读

Pandas文件读取

数据交换主要有以下几种类型:

  • 读取文本文件或磁盘上的其它高效文件格式
  • 与数据库交互
  • 与网络资源,比如Web API进行交互

在Pandas的使用场景中,最多的是将表格型的数据读取为DataFrame对象。实现这一功能的函数有很多,最常用的是read_csvread_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
复制代码

 

posted @   li-shan  阅读(271)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示