Python的CSV格式数据读取
![0c9d710a6cec72642495a91cd0f4e36d.png](https://i-blog.csdnimg.cn/blog_migrate/9c4dd10919b568fa103a44feec5be5c5.jpeg)
CSV其文件以纯文本形式存储表格数据(数字和文本)。CSV文件的体积会更小,创建分发读取更加方便,适合存放结构化信息。CSV文件在windows平台默认的打开方式是excel,但是它的本质是一个文本文件。
Python代码
import pandas as pd
pd.read_csv(filepath_or_buffer,header,names,parse_dates,index_col)
filepath_or_buffer参数
这个字符串可以是URL,有效的URL方案包括http、ftp、s3和文件。其实就是文件存在的地方可以直接写入"文件名.csv"
斜杆方向问题
例如读取数据路径为:C:\desktop\小说.txt
1.利用正斜杠/
df=pd.read_csv('C:/desktop/小说.txt')
2.斜杆\加上r表示字符串不被转义
df=pd.read_csv(r'C:\desktop\小说.txt')
如果单独加路径,不加后面的参数,默认第一行header,如果csv不含header会误把第一行数据当作header
header参数的作用
指定第几行作为列名(忽略注解行),并从列名后一列开始为数据。如果没有指定的列名,默认header=0
中文问题
如果csv文件中含有中文,该如何?
df = pd.read_csv(csv_file, encoding="gbk")
parse_dates参数的作用
将csv中的时间字符串转换成日期格式
+
数据例子
"name","time","date"
'Bob',21:33:30,2019-10-10
'Jerry',21:30:15,2019-10-10
'Tom',21:25:30,2019-10-10
'Vince',21:20:10,2019-10-10
'Hank',21:40:15,2019-10-10
+
parse_dates=[ ['time', 'date'] ]
即将[ ['time', 'date'] ]两列的字符串先合并后解析,合并后的新列会以下划线'_'连接原列名命名,解析得到的日期格式会作为DataFrame的第一列,在index_col指定表格中的第几列作为Index时需要小心。如本例中,指定参数index_col=0,则此时会以新生成的time_date列而不是name作为Index。因此保险的方法是指定列名,如index_col = 'name':
结果:
time_date name
0 2019-10-10 21:33:30 'Bob'
1 2019-10-10 21:30:15 'Jerry'
2 2019-10-10 21:25:30 'Tom'
3 2019-10-10 21:20:10 'Vince'
4 2019-10-10 21:40:15 'Hank'
+
parse_dates=['time', 'date']
分别对'time', 'date'进行字符串转日期,由于本例中的Time时间列格式为HH:MM:SS,parse_dates默认解析为Datetime格式,因此在解析time这一列时,会自作主张在前面加上一个当前日期。
结果:
name time date
0 'Bob' 2019-10-17 21:33:30 2019-10-10
1 'Jerry' 2019-10-17 21:30:15 2019-10-10
2 'Tom' 2019-10-17 21:25:30 2019-10-10
3 'Vince' 2019-10-17 21:20:10 2019-10-10
4 'Hank' 2019-10-17 21:40:15 2019-10-10
index_col参数作用
index_col为指定数据中那一列作为Dataframe的行索引,也可以可指定多列,形成层次索引,默认为None,即不指定行索引,这样系统会自动加上行索引,从0开始。
-end-