使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# 基础用法
import pandas as pd
pd.read_csv(path)
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 19910403
1 000002.SZ 2 万科A 深圳 全国地产 19910129
2 000004.SZ 4 ST国华 深圳 软件服务 19910114
3 000005.SZ 5 ST星源 深圳 环境保护 19901210
4 000006.SZ 6 深振业A 深圳 区域地产 19920427

# 如何指定字符集类型 encoding=None
pd.read_csv(path, encoding="utf8")

# 如何指定表头/列名行 header=0
pd.read_csv(path)
# 作者是archie
ts_code symbol name area industry list_date
000001.SZ 000001 平安银行 深圳 银行 19910403
000002.SZ 000002 万科A 深圳 全国地产 19910129
000004.SZ 000004 ST国华 深圳 软件服务 19910114
000005.SZ 000005 ST星源 深圳 环境保护 19901210
pd.read_csv(path, header=1)
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 19910403
1 000002.SZ 2 万科A 深圳 全国地产 19910129
2 000004.SZ 4 ST国华 深圳 软件服务 19910114
3 000005.SZ 5 ST星源 深圳 环境保护 19901210

# 如何指定分隔符 sep=","
pd.read_csv(path)
ts_code/symbol/name/area/industry/list_date
0 000001.SZ/000001/平安银行/深圳/银行/19910403
1 000002.SZ/000002/万科A/深圳/全国地产/19910129
2 000004.SZ/000004/ST国华/深圳/软件服务/19910114
3 000005.SZ/000005/ST星源/深圳/环境保护/19901210
pd.read_csv(path, sep='/')
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 19910403
1 000002.SZ 2 万科A 深圳 全国地产 19910129
2 000004.SZ 4 ST国华 深圳 软件服务 19910114
3 000005.SZ 5 ST星源 深圳 环境保护 19901210

# 如何自定义列名 names=None
pd.read_csv(path)
000001.SZ 000001 平安银行 深圳 银行 19910403
0 000002.SZ 2 万科A 深圳 全国地产 19910129
1 000004.SZ 4 ST国华 深圳 软件服务 19910114
2 000005.SZ 5 ST星源 深圳 环境保护 19901210
pd.read_csv(path, names=['ts_code','symbol','name','area','industry','list_date'])
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 19910403
1 000002.SZ 2 万科A 深圳 全国地产 19910129
2 000004.SZ 4 ST国华 深圳 软件服务 19910114
3 000005.SZ 5 ST星源 深圳 环境保护 19901210

# 如何指定行索引 index_col=None
pd.read_csv(path)
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 19910403
1 000002.SZ 2 万科A 深圳 全国地产 19910129
2 000004.SZ 4 ST国华 深圳 软件服务 19910114
3 000005.SZ 5 ST星源 深圳 环境保护 19901210
pd.read_csv(path, index_col="ts_code")
symbol name area industry list_date
ts_code
000001.SZ 1 平安银行 深圳 银行 19910403
000002.SZ 2 万科A 深圳 全国地产 19910129
000004.SZ 4 ST国华 深圳 软件服务 19910114
000005.SZ 5 ST星源 深圳 环境保护 19901210

# 如何读入指定列数据 usecols=None
pd.read_csv(path, usecols=["ts_code"])
ts_code
0 000001.SZ
1 000002.SZ
2 000004.SZ
3 000005.SZ
pd.read_csv(path, usecols=["ts_code", "area"])
ts_code area
0 000001.SZ 深圳
1 000002.SZ 深圳
2 000004.SZ 深圳
3 000005.SZ 深圳

# 如何读入前N行数据 nrows=None
pd.read_csv(path)
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 19910403
1 000002.SZ 2 万科A 深圳 全国地产 19910129
2 000004.SZ 4 ST国华 深圳 软件服务 19910114
3 000005.SZ 5 ST星源 深圳 环境保护 19901210
pd.read_csv(path, nrows=2)
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 19910403
1 000002.SZ 2 万科A 深圳 全国地产 19910129

# 如何跳过前N行数据 skiprows=None
pd.read_csv(path, skiprows=2)
000002.SZ 000002 万科A 深圳 全国地产 19910129
0 000004.SZ 4 ST国华 深圳 软件服务 19910114
1 000005.SZ 5 ST星源 深圳 环境保护 19901210

# 如何指定数据类型 dtype=None
pd.read_csv(path, dtype={"list_date": "str"}).info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ts_code 4 non-null object
1 symbol 4 non-null int64
2 name 4 non-null object
3 area 4 non-null object
4 industry 4 non-null object
5 list_date 4 non-null object
dtypes: int64(1), object(5)
memory usage: 320.0+ bytes

# 如何读入时进行数据运算 converters=None
pd.read_csv(path, converters={"ts_code": lambda code: code[:6]})
ts_code symbol name area industry list_date
0 000001 1 平安银行 深圳 银行 19910403
1 000002 2 万科A 深圳 全国地产 19910129
2 000004 4 ST国华 深圳 软件服务 19910114
3 000005 5 ST星源 深圳 环境保护 19901210

# 如何读入时对日期时间列进行转换 parse_dates=False
pd.read_csv(path, parse_dates=["list_date"])
ts_code symbol name area industry list_date
0 000001.SZ 1 平安银行 深圳 银行 1991-04-03
1 000002.SZ 2 万科A 深圳 全国地产 1991-01-29
2 000004.SZ 4 ST国华 深圳 软件服务 1991-01-14
3 000005.SZ 5 ST星源 深圳 环境保护 1990-12-10
pd.read_csv(path, parse_dates=["list_date"]).info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ts_code 4 non-null object
1 symbol 4 non-null int64
2 name 4 non-null object
3 area 4 non-null object
4 industry 4 non-null object
5 list_date 4 non-null datetime64[ns]
dtypes: datetime64[ns](1), int64(1), object(4)
memory usage: 320.0+ bytes

参数解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 以下为默认参数
pd.read_csv(
filepath_or_buffer: Union[str, pathlib.Path, IO[~AnyStr]], #文件路径
sep=',', #分割符
delimiter=None, #备选分隔符,如果指定该参数,则sep参数失效
header='infer', #指定第几行是表头,也就是指定列名行。由于默认参数skip_blank_lines=True,header参数将忽略空行和注释行, 因此header=0表示第一行数据而非文件的第一行
names=None, #指定列名,传入列表
index_col=None, #指定索引列,可以理解为行名
usecols=None, #使用数据的部分列,传需要读入的列名或序号[列名1,列名2],或excel中自带列名ABCD...如“A,B”或"A:D"
squeeze=False, #读入数据只一列时转Series对象,默认不转
prefix=None, #指定一个前缀,列名改为 前缀+序号
mangle_dupe_cols=True, #当列名有重复时,解析列名将变为X, X.1...,为False时后面重复列名的列会覆盖前列
dtype=None, #指定各数据列的数据类型,精准指定可传字典或列表
engine=None, #可以选择C或Python,一般不用
converters=None, ##对某一列使用Lambda函数,进行某种运算
true_values=None, #同false_values一起使用,若在列表中则数据变true
false_values=None, #同true_values一起使用,若在列表中数据变false
skipinitialspace=False,
skiprows=None, #跳过前几行,可传列表跳过多行(列名行为第0行),也可以传入Lambda函数如读取偶数行:skiprows=lambda x:x%2==0
skipfooter=0, #对应skiprows,跳过后几行
nrows=None, #读入前几行
na_values=None, #将指定的值更改为NaN,可传列表进行多个替换
keep_default_na=True, #默认True,读入空值为NaN,False直接无数据
na_filter=True, #空值标记,默认标记空值,False时不标记空值且参数keep_default_na和na_values都会失效
skip_blank_lines=True, #不读入空行
parse_dates=False, #传入需要进行解析日期列,如日期分三列存放可如下进行解析:parse_dates={"list_date": ["年", "月", "日"]}
date_parser=None, #配合parse_dates,对parse_dates参数传入列进行数据转化利用Lambda函数
keep_date_col=False, #parse_dates参数可以将多列合并并解析成一个时间列,此时使用该参数可以保留原有时间列
dayfirst=False, #如果parse_dates参数可以,会对转换后的日期转换为该月的第一天
iterator=False, #是否返回TextFileReader对象,可迭代
chunksize=None, #指定块大小,处理大型csv文件时使用,按块读入,返回可迭代TextFileReader对象
compression='infer', #指定压缩格式,用于对磁盘数据进行即时解压缩。如果为“infer”,且传入文件路径是以.gz、.bz2、.zip或.xz结尾的字符串,则使用gzip、bz2、zip或xz,否则不进行解压缩。如果使用zip,则ZIP文件必须仅包含一个要读取的数据文件。设置为None将不进行解压缩
lineterminator=None, #指定换行符,仅对C解析器有效
quotechar='"', #表示引用数据的开始和结束的字符
escapechar=None, #传入一个转义符,用于过滤数据中的该转入符
comment=None, #注释标识符,忽略每一行传入字符串之后的数据
encoding=None, #指定字符集类型,通常指定为'utf-8')