从本质上讲,csv是一种纯文本格式。如果只是查看csv文件可以用office打开,但是通常来讲,csv文件应该使用无格式记事本打开,这样可以更清楚的看到csv文件的内部格式。推荐使用Notepad ++打开:
如上图所示,是使用Notepad++打开的一个标准的csv文件。上述可见其文件分隔符是“,”。
# 此为最简单的读法,直接指名路径即可。其他参数采用默认
# 参数即可
>>> df = pd.read_csv(r'D:/myExcel/ratings.csv')
>>> df
userId movieId rating timestamp
0 1 1 4.0 964982703
1 1 3 4.0 964981247
2 1 6 4.0 964982224
3 1 47 5.0 964983815
4 1 50 5.0 964982931
... ... ... ... ...
100831 610 166534 4.0 1493848402
100832 610 168248 5.0 1493850091
100833 610 168250 5.0 1494273047
100834 610 168252 5.0 1493846352
100835 610 170875 3.0 1493846415
[100836 rows x 4 columns]
>>> df.dtypes
userId int64
movieId int64
rating float64
timestamp int64
dtype: object
读取csv文件与excel文件的最大区别在于sep参数的使用,本意指的是分隔符,默认是“,”。如果你的csv文件不是“,”分割,而是使用其他分隔符分割,此时必须指定sep参数,否则会出现你不想要的结果。
有如上csv文件,其是使用数量不等的空格做的分隔符,此时,如果按照正常的逻辑读取,便会出现问题
# 把abc三列按照一列进行了读取
>>> df = pd.read_csv(r'D:/myExcel/1.csv')
>>> df
a b c
0 9001 00010001 9000
1 2932 82992938 373
2 37322 83282 3222
>>> df.dtypes
a b c object
dtype: object
>>> df.columns
Index(['a b c'], dtype='object')
# 如下指定sep参数,\s+ 是正则表达式,表示至少一个空格
# 已经成功读取
>>> df = pd.read_csv(r'D:/myExcel/1.csv', sep='\s+')
>>> df
a b c
0 9001 10001 9000
1 2932 82992938 373
2 37322 83282 3222
>>> df.columns
Index(['a', 'b', 'c'], dtype='object')
>>> df.dtypes
a int64
b int64
c int64
dtype: object
其余的入参和read_excel函数并没有什么区别,详细的可以查看我之前的文章。下面举出几个常用的示例:
# 将所有类型按照字符串进行读取
>>> df = pd.read_csv(r'D:/myExcel/1.csv', sep='\s+', dtype='str')
>>> df
a b c
0 9001 00010001 9000
1 2932 82992938 373
2 37322 83282 3222
>>> df.dtypes
a object
b object
c object
dtype: object
# 仅读取指定的两列
>>> df = pd.read_csv(r'D:/myExcel/1.csv', sep='\s+', dtype='str', usecols=['a', 'b'])
>>> df
a b
0 9001 00010001
1 2932 82992938
2 37322 83282
以上就是python小工具关于pandas如何读取csv,txt文件。哈哈,有兴趣了欢迎关注python小工具,一起学习python和pandas