首先导入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类型读取, 就不会自动舍去零了。