Python的pandas模块中数据框这种数据类型,可以通过文件导入函数,将磁盘上的csv、execl等类型的文件装入内存,并生成数据框的格式,以方便后续使用pandas的专有方法进行处理。
6、DataFrame数据输导入导出方法
Pandas常用的读取数据的方法函数:
- pd.read_csv(filename)从csv文件导入数据,默认分隔符为“,"
- pd.read_table(filename)从文本文件导入数据,默认分隔符为制表符
- pd.read_excel(filename)从Excel文件导入数据
- pd.read_sql(query,connection_object)从SQL表/库中导入数据
- pd.read_json(json_string)从json文件导入数据
- pd.read_html(url)解析url、字符串或者HTML文件,提取数据表格
- pd.DataFrame(dict)从字典对象中读入数据
在读取的函数中都有很多参数,如函数pd.read_csv的格式如下:
pd.read_csv(filepath_or_buffer, sep=',', header='infer', names=None, index_col=None, usecols=None, dtype=None, skiprows=None, 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, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal='.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)
这个函数参数太多了,下面将常用的或者比较重要的参数来说明:filepath_or_buffer: 这是要读取的CSV文件的路径或者类似文件的对象,可以是本地文件,也可以是网络链接。
sep: 这是指定CSV文件中每一列数据之间的分隔符,默认是逗号,但也可以是其他符号,比如制表符' '。
header: 这是指定CSV文件中哪一行作为列名,默认是infer,表示自动推断,如果没有列名,可以设置为None。
names: 这是指定列名的列表,如果header为None,那么可以用这个参数来给每一列命名。
index_col: 这是指定哪一列或者哪几列作为DataFrame的索引,默认是None,表示不使用任何列作为索引。usecols: 这是指定要读取哪些列的数据,默认是None,表示读取所有列,可以用列名或者位置来指定。
dtype: 这是指定每一列数据的类型,默认是None,表示自动推断,可以用字典来映射每一列的类型,比如{'a': int, 'b': float}。
skiprows: 这是指定要跳过哪些行不读取,默认是None,表示不跳过任何行,可以用整数或者列表来指定。
nrows: 这是指定要读取多少行的数据,默认是None,表示读取所有行,可以用整数来指定。
na_values: 这是指定哪些值要被视为缺失值,默认是None,表示只有空值被视为缺失值,可以用字符串或者列表来指定。
keep_default_na: 这是指定是否保留默认的缺失值,默认是True,表示保留,如果设置为False,表示只有na_values中指定的值才被视为缺失值。
na_filter: 这是指定是否过滤掉缺失值,默认是True,表示过滤掉,如果设置为False,表示不过滤掉。
verbose: 这是指定是否显示详细的信息,默认是False,表示不显示,如果设置为True,表示显示。
skip_blank_lines: 这是指定是否跳过空白行,默认是True,表示跳过,如果设置为False,表示不跳过。
parse_dates: 这是指定是否解析日期格式的数据,默认是False,表示不解析,如果设置为True或者列表或者字典,表示解析。
infer_datetime_format: 这是指定是否推断日期格式的数据,默认是False,表示不推断,如果设置为True,表示推断。
date_parser: 这是指定用来解析日期格式的数据的函数,默认是None,表示用内置的解析器,可以用自定义的函数来指定。
dayfirst: 这是指定日期格式中是否先写日再写月,默认是False,表示不是,如果设置为True,表示是。
cache_dates: 这是指定是否缓存日期格式的数据,默认是True,表示缓存,如果设置为False,表示不缓存。
iterator: 这是指定是否返回一个可迭代的对象,默认是False,表示不返回,如果设置为True,表示返回。
chunksize: 这是指定每次迭代返回的行数,默认是None,表示不迭代,如果设置为整数,表示每次迭代返回的行数。
compression: 这是指定CSV文件是否压缩,默认是infer,表示自动推断,可以用字符串来指定压缩方式,比如gzip或者zip。
thousands: 这是指定千位分隔符,默认是None,表示没有千位分隔符,可以用字符串来指定千位分隔符,比如','或者'.'。
decimal: 这是指定小数点符号,默认是'.',表示用点作为小数点,可以用字符串来指定小数点符号,比如','或者'.'。
lineterminator: 这是指定行终止符,默认是None,表示用操作系统默认的行终止符,可以用字符串来指定行终止符,比如' '或者' '。
quotechar: 这是指定引号字符,默认是'"',表示用双引号作为引号字符,可以用字符串来指定引号字符,比如'"'或者"'"。
quoting: 这是指定引号规则,默认是0,表示最小化引号使用,可以用整数或者csv模块中的常量来指定引号规则,比如csv.QUOTE_MINIMAL或者csv.QUOTE_ALL。
doublequote: 这是指定是否双重引号内部的引号字符,默认是True,表示双重引号内部的引号字符,如果设置为False,表示用escapechar来转义内部的引号字符。
escapechar: 这是指定转义字符,默认是None,表示没有转义字符,可以用字符串来指定转义字符,比如''或者'/'。
comment: 这是指定注释符号,默认是None,表示没有注释符号,可以用字符串来指定注释符号,比如'#'或者';'。
encoding: 这是指定CSV文件的编码方式,默认是None,表示用系统默认的编码方式,可以用字符串来指定编码方式,比如'utf-8'或者'gbk'。
dialect: 这是指定CSV文件的方言,默认是None,表示用标准的CSV方言,可以用字符串或者csv模块中的Dialect类来指定方言。
error_bad_lines: 这是指定是否报错并跳过错误格式的行,默认是True,表示报错并跳过错误格式的行。如果设置为False, 表示不报错并忽略错误格式的行。
warn_bad_lines: 这是指定是否显示错误格式的行的警告信息,默认是True, 表示显示错误格式的行的警告信息。如果设置为False, 表示不显示错误格式的行的警告信息。
delim_whitespace: 这是指定是否用空白字符作为分隔符,默认是False, 表示不用空白字符作为分隔符。如果设置为True, 表示用空白字符作为分隔符,并且忽略sep参数。
low_memory: 这是指定是否在内存中分块读取数据,默认是True, 表示在内存中分块读取数据。如果设置为False, 表示一次性读取整个文件到内存中。
memory_map: 这是指定是否使用内存映射文件来读取数据,默认是False。
其实在实际使用中大部分参数使用缺省值即可。常用的参数包括读取的文件、分隔符、文件编码(Python 中用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8)、以及行数的指定等。
读入csv文件
import os
mypath=r"D:\_____newyear_willdo\py\gp"
df=pd.read_csv(os.path.join(mypath+'\\'+'Wly_Data.csv'),encoding='utf-8') ## 数据导出为csv文件
df
输出:
用skiprows参数来跳过一些行不读取,比如第二行到第五行
df = pd.read_csv('Wly_Data.csv', sep=';', header=0, skiprows=[1, 2, 3, 4])
用nrows参数来限制读取的行数,比如只读取前100行
df = pd.read_csv('Wly_Data.csv', sep=';', header=0, nrows=100)
举例:使用read_excel()方法导入文件
import pandas as pd
pd.read_excel('stu_data.xlsx')
导入.xlsx文件时,指定导入哪个Sheet
1. pd.read_excel('stu_data.xlsx',sheet_name='Target')
2. pd.read_excel('stu_data.xlsx',sheet_name=0)
导入.xlsx文件时,通过index_col指定行索引
pd.read_excel('stu_data.xlsx',sheet_name=0,index_col=0)
导入.xlsx文件时,通过header指定列索引
pd.read_excel('stu_data.xlsx',sheet_name=0,header=1)
有时候本地文件的列数太多,而我们又不需要那么多列时,我们就 可以通过设置usecols参数来指定要导入的列。
pd.read_excel('stu_data.xlsx',usecols=[1,2,3])
常用的写入文件的方法函数:
- pd.to_csv(filename) 导出数据至csv文件
- pd.to_excel(filename) 导出数据至excel文件
- pd.to_sql(table_name,connection_object) 导出数据至SQL表
- pd.to_json(json_string) 导出数据为json格式
- pd.to_html(url) 导出数据为html文件
- pd.to_clipboard(filename) 导出数据到剪切板
- 第一个参数为写入文件路径和文件名,seq参数用于设置写入文件的分隔符,header参数表示写入文件是否写入标题行,默认值为True,index参数表示是否写入行索引,默认值为True。
函数to_excel参数:
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
- excel_writer:文件路径或现有的ExcelWriter。
- sheet_name:指的是包含DataFrame的工作表的名称。
- na_repr:缺失数据的表示。
- float_format:这是一个可选参数,用于格式化浮点数的字符串。
- columns:指定要写入的列。
- header:写出列名。如果给定字符串的列表,则假定它是列名的别名。
- index:写入索引。
- index_label:指定索引列的列标签。如果未指定,并且标题和索引为True,则使用索引名称。如果DataFrame使用MultiIndex,则应给出一个序列。
- startrow:默认值为0。它指的是要将DataFrame倾倒到的左上角单元格行。
- startcol:默认值为0。它指的是要将DataFrame倾倒到的左上角单元格列。
- engine:这是一个可选参数,用于指定要使用的引擎,可以是openpyxl或xlsxwriter。
- merge_cells:它返回布尔值,其默认值为True。将MultiIndex和分层行写为合并单元格。
- encoding:这是一个可选参数,用于对生成的excel文件进行编码。仅对xlwt是必需的。
- inf_rep:这也是一个可选参数,默认值为inf。通常表示无穷大。
- verbose:它返回一个布尔值。默认值为True。用于在错误日志中显示更多信息。
- freeze_panes:这也是一个可选参数,用于指定要冻结的基于一的最底行和最右列。
其实在这里面常用的参数就几个,其他可以使用缺省值
df.to_csv(
filepath_or_buffer :要保存的文件路径
sep =:分隔符
columns :需要导出的变量列表
header = True :指定导出数据的新变量名,可直接 提供 list
index = True :是否导出索引
mode = 'w' : Python 写模式,读写方式:r,r+ , w , w+ , a , a+
encoding = 'utf-8' :默认. 导出的文件编码格式
)
举例:输出文件
wly_df为五粮液的股票价格和涨跌情况。
wly_df.to_excel('out_wly.xlsx', index=False)
本章节主要介绍了多种数据文件装入内容成为数据框dataFrame的方法,供查询参考,重点介绍了读入csv文件的函数pd.read_csv()的使用和各种参数的含义,以及输出函数pd.to_excel()的使用方法和参数含义,同时通过五粮液股票信息数据作为例子,导入和导出,更便于理解。
码字不易,欢迎关注、点赞和收藏。如果文章能给你带来知识很力量,欢迎留言和讨论。你的支持是我前进的动力。