pandas csv读取——用实际样例介绍read_csv方法参数

pandas读取csv文件,各个参数介绍

  • 1.为了熟悉它的用法,首先推荐官方文档
  • 2.个人学习心得
    • 2.1常用参数说明(filepath,sep,header,skiprows等)
      • 2.1.1参数使用示例
        • 2.1.1.1首先看直接pd.read_csv(__filepath__)的效果
        • 2.1.1.2其次看pd.read_csv(filepath, header = 2)会发生什么
        • 2.1.1.3 当skiprows是 ==lambda表达式==时会怎样?
        • 2.1.1.4 当skiprows与header结合用会怎样?
      • 2.1.2 未完待续(希望有时间补充上吧)

当我们需要使用pandas读取csv文件时,目的是为了得到一个合适的DataFrame。pandas有内置方法 read_csv() ,仅仅知道这个方法是不够的,还需要进一步熟悉它的参数,这样才能根据我们的需求来读取文件。

1.为了熟悉它的用法,首先推荐官方文档

参见 官方文档
官方文档里有非常详细的说明。如果各位时间充裕,还是建议查看官方文档。下面是我个人学习的一点体会。不足之处,欢迎大家交流讨论。

2.个人学习心得

2.1常用参数说明(filepath,sep,header,skiprows等)

参数名称 参数作用
filepath 文件的路径(完整的绝对路径或者相对路径)
sep 类型为str。csv文件中每一行数据之间的分隔符。官方文档指出对于read_csv()这个参数默认是英文逗号’ ,’而对于read_table()这个参数默认是制表符 ‘|t’ 。当然用户可以根据自己csv文件格式的特点自行设置。read_csv()还有一个参数是 delimeter, 作用与sep相同,只不过delitemer的默认值为None,而不是英文逗号 ‘,’
skiprows 值为整数或者可调用的函数,当指为整数时,作用是从文件头开始跳过无用的数据行(以0为起始下标)。当skiprows是一个可以调用的函数时,会读取符合该函数定义的规则的行。
header 值为整数,指定pd.DataFrame的columns的名称在哪一行

下面以读一个csv文件为例,展示下相关用法:

2.1.1参数使用示例

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,买的准备好现金,概不找零

2.1.1.1首先看直接pd.read_csv(filepath)的效果

可以发现默认从第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                     买的准备好现金,概不找零

2.1.1.2其次看pd.read_csv(filepath, header = 2)会发生什么

输出发现,当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                     买的准备好现金,概不找零

2.1.1.3 当skiprows是 lambda表达式时会怎样?

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                     割肉割肉,靠!

2.1.1.4 当skiprows与header结合用会怎样?

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文件完全够用了。

2.1.2 未完待续(希望有时间补充上吧)

你可能感兴趣的:(杂文)