【Pandas基础教程】第02讲 Pandas读取数据

1. 读取纯文本文件

pd.read_csv() 用于读取csv、tsv、txt等纯文本文件,csv以逗号分隔,tsv以制表符分隔,txt的分隔符任意。

pd.read_csv(
    filepath_or_buffer: FilePathOrBuffer,  # 文件路径
    sep=",",                               # 分隔符
    header="infer",                        # 列名
    names=None,                            # 自定义列名
    index_col=None,                        # 索引名
    dtype=None,                            # 数据类型
    engine=None,                           # 解析器引擎
    converters=None,                       # 函数转换
    encoding=None,                         # 文件编码
    skipinitialspace=False,                # 是否忽略分隔符后的空白
    skiprows=None,                         # 从文件头部忽略的行数
    skipfooter=0,                          # 从文件尾部忽略的行数
    nrows=None,                            # 读取的行数
    error_bad_lines=True,                  # 是否处理错误行
)
  • filepath_or_buffer:str, path object or file-like object。字符串路径、路径对象或类文件对象,包括本地文件路径(例如 ./datas/1.csv)、URL地址(http、ftp、s3、gs和file)等;
  • sep:str, default ‘,’。指定分隔符
  • header:int, list of int, default ‘infer’。指定行数作为列名,开始读取数据的行数。header=None 没有列名,自动设置为数字编号;header=0 以第一行作为列名;可以传入一个列表,形成多重列名,列表中未指定的中间行将被跳过;
  • names:array-like, optional。自定义列名
  • index_col:int, str, sequence of int / str, or False, default None,指定列数/列名作为索引名,可以传入一个序列,形成多重索引;
  • dtype:Type name or dict of column -> type, optional,指定各列的数据类型,例如 {'a': np.float64, 'b': np.int32}
  • engine:{‘c’, ‘python’}, optional,指定解析器引擎
  • converters:dict, optional,对某些列进行函数转换,例如 {'金额': lambda x: x+1, '交易量': lambda x: x*2}
  • encoding:str, optional,指定文件编码
  • skipinitialspace:bool, default False,是否忽略分隔符后的空白
  • skiprows:list-like, int or callable, optional,从文件头部忽略的行数
  • skipfooter:int, default 0,从文件尾部忽略的行数
  • nrows:int, optional,指定读取的行数,用于读取部分数据;
  • error_bad_lines:bool, default,是否处理错误行,如果值为True,遇到错误行时终止执行,且不会返回任何结果;如果值为False,则跳过错误行继续解析;

C引擎解析速度更快,Python引擎功能更完善。如果分隔符为None,C引擎无法自动检测分隔符,强制使用Python引擎,它调用Python内置嗅探器工具csv.Sniffer检测分隔符。此外,超过1个字符且不同于 \s+ 的分隔符将被视为正则表达式,C引擎不能解析正则表达式,强制使用Python引擎。

默认情况下,包含太多字段的行(例如,带有太多逗号的csv行)会引发异常
并且不会返回任何DataFrame如果为False,则这些“坏行”将从返回的DataFrame中删除。

2. 读取Excel文件

pd.read_excel() 用于读取Excel文件,包括xls、xlsx、xlsm、xlsb、odf、ods和odt等。

pd.read_excel(
    io,              # 文件路径
    sheet_name=0,    # 工作表
    header=0,        # 列名
    names=None,      # 自定义列名
    index_col=None,  # 索引名
    dtype=None,      # 数据类型
    engine=None,     # 解析器引擎
    converters=None, # 函数转换
    skiprows=None,   # 从文件头部忽略的行数
    skipfooter=0,    # 从文件尾部忽略的行数
    nrows=None,      # 读取的行数
):
  • io:str, bytes, ExcelFile, xlrd.Book, path object, or file-like object,字符串路径、路径对象或类文件对象,包括本地文件路径(例如 ./datas/1.xls)、URL地址(http、ftp、s3、gs和file)等;
  • sheet_name:str, int, list, or None, default 0,指定工作表,可以是多张工作表,返回字典,sheet_name=None获取所有工作表;
  • engine:str, default None,指定解析器引擎,必须与文件类型相匹配,包括xlrd、openpyxl、odf和pyxlsb等。

3. 读取MySQL数据库

pd.read_sql() 用于读取MySQL数据库,它是 read_sql_table()read_sql_query() 的便捷封装,根据输入情形委派给特定函数。

pd.read_sql(
    sql,             # 查询语句
    con,             # 数据库连接
    index_col=None,  # 索引名
)
  • sql:str or SQLAlchemy Selectable (select or text object),查询语句
  • con:SQLAlchemy connectable, str, or sqlite3 connection,指定数据库连接

4. 数据库魔法命令

%load_ext sql
%sql mysql+pymysql://username:password@localhost/database_name
data = %sql select * from table_name
df = data.DataFrame()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值