将 csv 文件读入 DataFrame

读取文件 data_file.csv 的示例如:

文件:

index,header1,header2,header3
1,str_data,12,1.4
3,str_data,22,42.33
4,str_data,2,3.44
2,str_data,43,43.34

7, str_data, 25, 23.32

码:

pd.read_csv('data_file.csv')

输出:

   index    header1  header2  header3
0      1   str_data       12     1.40
1      3   str_data       22    42.33
2      4   str_data        2     3.44
3      2   str_data       43    43.34
4      7   str_data       25    23.32

一些有用的论点:

  • sep 默认字段分隔符是逗号 ,。如果你需要不同的分隔符,请使用此选项,例如 pd.read_csv('data_file.csv', sep=';')

  • index_col 使用 index_col = nn 为整数),你可以告诉 pandas 使用列 n 来索引 DataFrame。在上面的例子中:

    pd.read_csv('data_file.csv',  index_col=0)
    

    输出:

              header1  header2  header3
    index
     1       str_data       12     1.40
     3       str_data       22    42.33
     4       str_data        2     3.44
     2       str_data       43    43.34
     7       str_data       25    23.32
    
  • skip_blank_lines 默认情况下会跳过空白行。使用 skip_blank_lines=False 包含空行(它们将填充 NaN 值)

    pd.read_csv('data_file.csv',  index_col=0,skip_blank_lines=False)
    

    输出:

             header1  header2  header3
    index
     1      str_data       12     1.40
     3      str_data       22    42.33
     4      str_data        2     3.44
     2      str_data       43    43.34
    NaN          NaN      NaN      NaN
     7      str_data       25    23.32
    
  • parse_dates 使用此选项可解析日期数据。

    文件:

    date_begin;date_end;header3;header4;header5
    1/1/2017;1/10/2017;str_data;1001;123,45
    2/1/2017;2/10/2017;str_data;1001;67,89
    3/1/2017;3/10/2017;str_data;1001;0
    

    将列 01 解析为日期的代码:

    pd.read_csv('f.csv', sep=';', parse_dates=[0,1])
    

    输出:

      date_begin   date_end   header3  header4 header5
    0 2017-01-01 2017-01-10  str_data     1001  123,45
    1 2017-02-01 2017-02-10  str_data     1001   67,89
    2 2017-03-01 2017-03-10  str_data     1001       0
    

    默认情况下,推断日期格式。如果要指定可以使用的日期格式

    dateparse = lambda x: pd.datetime.strptime(x, '%d/%m/%Y')
    pd.read_csv('f.csv', sep=';',parse_dates=[0,1],date_parser=dateparse)
    

    输出:

      date_begin   date_end   header3  header4 header5
    0 2017-01-01 2017-10-01  str_data     1001  123,45
    1 2017-01-02 2017-10-02  str_data     1001   67,89
    2 2017-01-03 2017-10-03  str_data     1001       0   
    

有关该功能参数的更多信息,请参阅官方文档