您当前的位置: 首页 >  pandas

B417科研笔记

暂无认证

  • 2浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

pandas 读写csv/excel的常见问题与应对

B417科研笔记 发布时间:2020-04-02 19:39:03 ,浏览量:2

首先导入pandas:

import pandas as pd
  • 基本读取

    s = pd.read_csv('1.csv')
    

    这样就是将当前文件夹下的"1.csv"文件读取为DataFrame形式,存储到s中,非常方便。 excel的话同理

    		s = pd.read_excel('1.csv')
    
  • 基本写入

    s = pd.DataFrame(a)
    s.to_csv('1.csv')
    

    注意这是DataFrame类型的方法,如上,可将s保存为’1.csv’中。

  • 编码错误 涉及中文的时候容易出现这样的错误:

    UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 0-1

    或者

    UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1

    这时候需要将代码改为:

    s = pd.read_csv('1.csv', encoding = 'gbk')
    

    这里只是用gbk举例,很多中文的乱码都是因为这个问题。 如果还不行的话可以试试其他的编码方式。

  • 读取时的头和索引 对应于pandas的 column 和 index, 直接读取的话, 会默认将第一行数据读为头, 额外生成一列数据为索引, 与预期不符。

      s = pd.read_csv('1.csv', header = 0)
    

    将参数header置为0, 那么读入时,则会默认将每列名为为 0, 1, 2, 3, 而不会把本该是数据的第一行作为头了。

    s = pd.read_csv(‘1.csv’, index_col=0)

    通过index_col, 可以指定用哪一列作为读取后DataFrame的索引, 如用0就是代表第一列。 
    
    
  • 零的问题 当存储的数据中有0时,如‘000001’, 那么程序会默认为这就是‘1’, 结果就存成了1, 但事实上你要存的是字符串‘000001’,这就是存储csv时的丢零问题。 同理, ‘000001’ 也会被读成1 。

    • 存储时不丢零
    code = '\t000001'
    A = pd.DataFrame(code)
    A.to_csv('1.csv')
    

    在要存储的字符串前面加“\t”, 就会使得整个字符串得以保存。

    • 读取时不丢零
    s = pd.read_csv('1.csv'  converters={'code': str})
    

    指定参数converts, 可以让某一列代码如’code’ 按str类型读取, 就不会自动舍去零了。

关注
打赏
1649265742
查看更多评论
立即登录/注册

微信扫码登录

0.0361s