pandas read_csv 主要参数详解

用途:

读取CSV(逗号分割)文件到DataFrame,也支持文件的部分导入和选择迭代

语法:

pandas.read_csv(filepath_or_buffer, sep=’, ‘, delimiter=None, header=‘infer’, names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=b’.’, lineterminator=None, quotechar=’"’, quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

主要参数及说明:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数及实例:

示例数据下载::
链接:https://pan.baidu.com/s/1aLLxqLsEAcaKlM6pw4WDgw
提取码:mcfd

从CSV文件中加载数据:此处path是相对路径

import pandas as pd
data=pd.read_csv('exampledata.csv')
print(data)
#输出:行数过多会被省略
     year  quarter    realgdp   ...    realdpi      cpi      m1
0    1959        1   2710.349   ...     1886.9   28.980   139.7
1    1959        2   2778.801   ...     1919.7   29.150   141.7
2    1959        3   2775.488   ...     1916.4   29.350   140.5
3    1959        4   2785.204   ...     1931.3   29.370   140.0
4    1960        1   2847.699   ...     1955.5   29.540   139.6
5    1960        2   2834.390   ...     1966.1   29.550   140.2
6    1960        3   2839.022   ...     1967.8   29.750   140.9
7    1960        4   2802.616   ...     1966.6   29.840   141.1
8    1961        1   2819.264   ...     1984.5   29.810   142.1
9    1961        2   2872.005   ...     2014.4   29.920   142.9
                           .........................

参数header: int list of ints 将某行制定为列名,默认header=0

#指定第二行为列名:
import pandas as pd
data=pd.read_csv('exampledata.csv',header=1)
print(data)
#输出:
     1959  1   2710.349  1707.4   ...     470.045   1886.9    28.98   139.7
0    1959  2   2778.801  1733.7   ...     481.301   1919.7   29.150   141.7
1    1959  3   2775.488  1751.8   ...     491.260   1916.4   29.350   140.5
                                              ...............

names : array-like, default None自定义列标题,需设定header=None。

import pandas as pd
data=pd.read_csv('exampledata.csv',header=None,names=list('abcdefghi'))
print(data)

#输出:
        a        b          c   ...          g        h       i
0    year  quarter    realgdp   ...    realdpi      cpi      m1
1    1959        1   2710.349   ...     1886.9    28.98   139.7
2    1959        2   2778.801   ...     1919.7    29.15   141.7
3    1959        3   2775.488   ...     1916.4    29.35   140.5
                              .......

index_col : int or sequence or False, default None
指定哪一列作为行索引,如果给定一个序列则是指定多层索引:

import pandas as pd
data=pd.read_csv('exampledata.csv',index_col=(0,1))
print(data)
#输出:
                realgdp  realcons   realinv   ...    realdpi      cpi      m1
year quarter                                  ...                            
1959 1         2710.349    1707.4   286.898   ...     1886.9   28.980   139.7
        2         2778.801    1733.7   310.859   ...     1919.7   29.150   141.7
       3         2775.488    1751.8   289.226   ...     1916.4   29.350   140.5
       4         2785.204    1753.7   299.356   ...     1931.3   29.370   140.0
1960 1         2847.699    1770.5   331.722   ...     1955.5   29.540   139.6
        2         2834.390    1792.9   298.152   ...     1966.1   29.550   140.2
        3         2839.022    1785.8   296.375   ...     1967.8   29.750   140.9
        4         2802.616    1788.2   259.764   ...     1966.6   29.840   141.1
1961 1         2819.264    1787.7   266.405   ...     1984.5   29.810   142.1
        2         2872.005    1814.3   286.246   ...     2014.4   29.920   142.9
        3         2918.419    1823.1   310.227   ...     2041.9   29.980   144.1
        4         2977.830    1859.6   315.463   ...     2082.0   30.040   145.2
                                  ...............

usecols:单列数或多列数组成的列表,单列名称或多列名称组成的列表
指定加载哪些列:

#加载前三列
import pandas as pd
data=pd.read_csv('exampledata.csv',usecols=(0,1,2))
print(data)
#输出:
     year  quarter    realgdp
0    1959        1   2710.349
1    1959        2   2778.801
2    1959        3   2775.488
3    1959        4   2785.204
       ............

prefix : str, default None 在没有列标题时,给列添加前缀

import pandas as pd
data=pd.read_csv('exampledata.csv',usecols=(0,1,2),header=None,prefix='list')
print(data)

#输出:
    list0    list1      list2
0    year  quarter    realgdp
1    1959        1   2710.349
2    1959        2   2778.801
3    1959        3   2775.488
           ............

dtype:字典{‘列名/列号’:‘指定的数据类型’}
数据类型见:https://wizardforcel.gitbooks.io/ts-numpy-tut/content/3.html

data=pd.read_csv('exampledata.csv',usecols=(0,1,2),dtype={2:np.float64})
print(np.array(data).dtype)
#输出:
float64

converters:{‘列名/列号’:‘函数’} 将函数应用于指定的列
skiprows :list-like or integer 指定忽略的行数
skipfooter :同上,但是从文件尾部开始数
nrows : int 需要读取的行数,从文件头部开始

na_values : scalar, str, list-like, or dict, default None ,指定某些值为空值.
默认为空值的值有,默认会将’-1.#IND’, ‘1.#QNAN’, ‘1.#IND’, ‘-1.#QNAN’, ‘#N/A N/A’,’#N/A’, ‘N/A’, ‘NA’, ‘#NA’, ‘NULL’, ‘NaN’, ‘-NaN’, ‘nan’, ‘-nan’, ''转换为NaN,如有需求,可指定某些值为空值

skip_blank_lines : boolean, default True:如果为True,则跳过空行;否则记为NaN

parse_dates:解析日期
parse_dates : boolean or list of ints or names or list of lists or dict, default False
parsedate的值可以是:
boolean. True -> 解析索引
list of ints or names. e.g. If [1, 2, 3] -> 解析1,2,3列的值作为独立的日期列;
list of lists. e.g. If [[1, 3]] -> 合并1,3列作为一个日期列使用
dict, e.g. {‘foo’ : [1, 3]} -> 将1,3列合并,并给合并后的列起名为"foo"

date_parser:指定一个自定义函数解析日期
Pandas默认的数据读取格式是‘YYYY-MM-DD HH:MM:SS’。
参数可以是:
1.使用一个或者多个arrays(由parse_dates指定)作为参数;
2.连接指定多列字符串作为一个列作为参数;
3.每行调用一次date_parser函数来解析一个或者多个字符串(由parse_dates指定)作为参数。

 #定义一个解析的日期的方法,
dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%d')
parse_dates指定要将那些数据做日期解析,此处是将 year mont date三列合并为datetime列并解析

data=pd.read_csv('exampledata.csv',nrows=5,date_parser=dateparse,parse_dates={'datetime':['year','month','date']})

print(data)
#这是一个坑

补:日期解析方法: dateutil.parser.parse
可以解析几乎所有人类可以理解的时间日期形式

from dateutil.parser import parse
dt=parse('Jan 31,1997, 10:45 PM')
print(dt)
#输出:
2019-01-31 22:45:00

chunksize:int 将文件切成等量的块,可用于迭代,生成TextFileReader迭代器
例如:chunksize=5,则将读取到的数据分成多块,每份5行

import pandas as pd
import numpy as np

data=pd.read_csv('exampledata.csv',chunksize=5)

for i in data:
    print(i)
#输出:
   year  month  date   realgdp  ...    realgovt  realdpi    cpi     m1
0  1959      1     1  2710.349  ...     470.045   1886.9  28.98  139.7
1  1959      2     2  2778.801  ...     481.301   1919.7  29.15  141.7
2  1959      3     3  2775.488  ...     491.260   1916.4  29.35  140.5
3  1959      4     4  2785.204  ...     484.052   1931.3  29.37  140.0
4  1960      1     5  2847.699  ...     462.199   1955.5  29.54  139.6

[5 rows x 10 columns]
   year  month  date   realgdp  ...    realgovt  realdpi    cpi     m1
5  1960      2     6  2834.390  ...     460.400   1966.1  29.55  140.2
6  1960      3     7  2839.022  ...     474.676   1967.8  29.75  140.9
7  1960      4     8  2802.616  ...     476.434   1966.6  29.84  141.1
8  1961      1     9  2819.264  ...     475.854   1984.5  29.81  142.1
9  1961      2    10  2872.005  ...     480.328   2014.4  29.92  142.9

[5 rows x 10 columns]
                                           .........

可以用get_chunk(int/None)方法进行迭代:
get_chunk()不传参数,默认迭代一个chunk
get_chunk(int) 传入数字参数,自定义迭代n条记录

data=pd.read_csv('exampledata.csv',chunksize=5)
print(data.get_chunk(6))
print(data.get_chunk())
#输出:
   year  month  date   realgdp  ...    realgovt  realdpi    cpi     m1
0  1959      1     1  2710.349  ...     470.045   1886.9  28.98  139.7
1  1959      2     2  2778.801  ...     481.301   1919.7  29.15  141.7
2  1959      3     3  2775.488  ...     491.260   1916.4  29.35  140.5
3  1959      4     4  2785.204  ...     484.052   1931.3  29.37  140.0
4  1960      1     5  2847.699  ...     462.199   1955.5  29.54  139.6
5  1960      2     6  2834.390  ...     460.400   1966.1  29.55  140.2

[6 rows x 10 columns]
    year  month  date   realgdp  ...    realgovt  realdpi    cpi     m1
6   1960      3     7  2839.022  ...     474.676   1967.8  29.75  140.9
7   1960      4     8  2802.616  ...     476.434   1966.6  29.84  141.1
8   1961      1     9  2819.264  ...     475.854   1984.5  29.81  142.1
9   1961      2    10  2872.005  ...     480.328   2014.4  29.92  142.9
10  1961      3    11  2918.419  ...     493.828   2041.9  29.98  144.1

[5 rows x 10 columns]

注意:
get_chunk的方法类似迭代器的next方法,如例:第一次迭代了6条数据,第二次则从第七条开始迭代,不可循环迭代

猜你喜欢

转载自blog.csdn.net/weixin_44595372/article/details/88117658
今日推荐