当我们需要使用pandas读取csv文件时,目的是为了得到一个合适的DataFrame。pandas有内置方法 read_csv() ,仅仅知道这个方法是不够的,还需要进一步熟悉它的参数,这样才能根据我们的需求来读取文件。
参见 官方文档
官方文档里有非常详细的说明。如果各位时间充裕,还是建议查看官方文档。下面是我个人学习的一点体会。不足之处,欢迎大家交流讨论。
参数名称 | 参数作用 |
---|---|
filepath | 文件的路径(完整的绝对路径或者相对路径) |
sep | 类型为str。csv文件中每一行数据之间的分隔符。官方文档指出对于read_csv()这个参数默认是英文逗号’ ,’而对于read_table()这个参数默认是制表符 ‘|t’ 。当然用户可以根据自己csv文件格式的特点自行设置。read_csv()还有一个参数是 delimeter, 作用与sep相同,只不过delitemer的默认值为None,而不是英文逗号 ‘,’ |
skiprows | 值为整数或者可调用的函数,当指为整数时,作用是从文件头开始跳过无用的数据行(以0为起始下标)。当skiprows是一个可以调用的函数时,会读取符合该函数定义的规则的行。 |
header | 值为整数,指定pd.DataFrame的columns的名称在哪一行 |
下面以读一个csv文件为例,展示下相关用法:
example.csv的前11行,其中前两行为无效数据,第三行为数据列的名称,最后十行为有效数据
error,line,1
error,line,2
fans_num,date,comment
1,2019-04-18,我恐高,咋办。
0,2019-04-18,这段时间行情不错,好几天T加1了想找几个信得过的朋友一起。
0,2019-04-18,为什么你们能发图
3,2019-04-18,股民越恐高--指数逐浪高
3,2019-04-18,奶奶滴个雄,一个星期的时间,从赚两万到亏三万,无语了
187,2019-04-18,今天大盘指数创业板指数上证50指数都跌了12个点,幺俩=要凉!
0,2019-04-18,有没有人帮我看看西安银行,
4,2019-04-18,三十万专职炒股能存活吗?感觉今天盯盘好辛苦!贪心没卖倒亏了
18,2019-04-18,割肉割肉,靠!
0,2019-04-18,买的准备好现金,概不找零
可以发现默认从第1行开始读,同时默认把第一行数据当作了pd.DataFrame的列名称。所以说也就是等价于pd.read_csv(filepath, header = 0),也就是把第一行当作列名称
error line 1
0 error line 2
1 fans_num date comment
2 1 2019-04-18 我恐高,咋办。
3 0 2019-04-18 这段时间行情不错,好几天T加1了想找几个信得过的朋友一起。
4 0 2019-04-18 为什么你们能发图
5 3 2019-04-18 股民越恐高--指数逐浪高
6 3 2019-04-18 奶奶滴个雄,一个星期的时间,从赚两万到亏三万,无语了
7 187 2019-04-18 今天大盘指数创业板指数上证50指数都跌了12个点,幺俩=要凉!
8 0 2019-04-18 有没有人帮我看看西安银行,
9 4 2019-04-18 三十万专职炒股能存活吗?感觉今天盯盘好辛苦!贪心没卖倒亏了
10 18 2019-04-18 割肉割肉,靠!
11 0 2019-04-18 买的准备好现金,概不找零
输出发现,当header=2时,第0行和第1行直接被忽略了。所以此时也等价于pd.read_csv(filepath, skiprows = 2)
fans_num date comment
0 1 2019-04-18 我恐高,咋办。
1 0 2019-04-18 这段时间行情不错,好几天T加1了想找几个信得过的朋友一起。
2 0 2019-04-18 为什么你们能发图
3 3 2019-04-18 股民越恐高--指数逐浪高
4 3 2019-04-18 奶奶滴个雄,一个星期的时间,从赚两万到亏三万,无语了
5 187 2019-04-18 今天大盘指数创业板指数上证50指数都跌了12个点,幺俩=要凉!
6 0 2019-04-18 有没有人帮我看看西安银行,
7 4 2019-04-18 三十万专职炒股能存活吗?感觉今天盯盘好辛苦!贪心没卖倒亏了
8 18 2019-04-18 割肉割肉,靠!
9 0 2019-04-18 买的准备好现金,概不找零
pd.read_csv(filepath, skiprows=lambda x : x%2 == 0)。分析结果发现取得是偶数行
error line 2
0 1 2019-04-18 我恐高,咋办。
1 0 2019-04-18 为什么你们能发图
2 3 2019-04-18 奶奶滴个雄,一个星期的时间,从赚两万到亏三万,无语了
3 0 2019-04-18 有没有人帮我看看西安银行,
4 18 2019-04-18 割肉割肉,靠!
pd.read_csv(filepath, header=2, skiprows = 2)
观察发现是先跳过了前两行,再从剩下的行中找第2行(从0开始计数)。
0 2019-04-18 这段时间行情不错,好几天T加1了想找几个信得过的朋友一起。
0 0 2019-04-18 为什么你们能发图
1 3 2019-04-18 股民越恐高--指数逐浪高
2 3 2019-04-18 奶奶滴个雄,一个星期的时间,从赚两万到亏三万,无语了
3 187 2019-04-18 今天大盘指数创业板指数上证50指数都跌了12个点,幺俩=要凉!
4 0 2019-04-18 有没有人帮我看看西安银行,
5 4 2019-04-18 三十万专职炒股能存活吗?感觉今天盯盘好辛苦!贪心没卖倒亏了
6 18 2019-04-18 割肉割肉,靠!
7 0 2019-04-18 买的准备好现金,概不找零
pd.read_csv(filepath, header = 2, skiprows = lambda x: x % 2 == 0)
观察发现,选取header时依旧是从满足skiprows的行中进行选取。
0 2019-04-18 为什么你们能发图
0 3 2019-04-18 奶奶滴个雄,一个星期的时间,从赚两万到亏三万,无语了
1 0 2019-04-18 有没有人帮我看看西安银行,
2 18 2019-04-18 割肉割肉,靠!
有了上面这些,读取一个标准的csv文件完全够用了。