pandas中常见文件读写方法
读
+ **read_csv**
+ **read_excel**
+ read_hdf
+ read_sql
+ read_json
+ read_msgpack (experimental)
+ read_html
+ read_gbq (experimental)
+ read_stata
+ read_sas
+ read_clipboard
+ read_pickle
写
+ **to_csv**
+ **to_excel**
+ to_hdf
+ to_sql
+ to_json
+ to_msgpack (experimental)
+ to_html
+ to_gbq (experimental)
+ to_stata
+ to_clipboard
+ to_pickle
其它数据源:
+ 数据库
+ 读取网页数据,网络文件
+ 读取股票数据
+ yahoo,世界银行等等
读取你的第一个文件
文本文件是我们在工作中最常见的数据文件,常见的格式有csv、tsv、txt等,这节课我们就来介绍一些这种类型的文件的读写。
读取文本文件,我们只需要使用pandas中的`read_csv`函数即可。csv、tsv、txt格式的文件都可以用`read_csv`这一个函数读取。
# 首先导入我们所需要的模块
import pandas as pd
读入带表头的数据
df = pd.read_csv('../data/housing.csv') # 默认会把第一行当做表头
print(df.shape)#查看数据行列
df.head()#查看前5行
pd.read_csv?常见参数 pd.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, 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, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)
需要掌握的几个参数:
1. 文件路径:这个毫无疑问,不然程序怎么知道你要读取的是哪个文件
2. 分隔符sep:默认为',',具体的根据你的文件中具体的分隔符来指定。常见的有'\t',',','|'等。
3. 编码方式encoding:默认为'utf-8',也可能是其他方式,常见的编码方式有utf-8,gbk,utf-16等。
4. header:默认把第一行数据当做表头。当读入无表头的数据时,要将其设置为None。
读取不带表头的文件
df = pd.read_csv('../data/play_noheader.txt',sep=',',encoding='utf-8')
print(df.shape)#查看数据行列
df.head()#查看前5行
# 通过header = None 设置首行为非表头
df = pd.read_csv('../data/play_noheader.txt',sep=',',encoding='utf-8',header=None)
print(df.shape)#查看数据行列
df.head()#查看前5行
# 我们也可以通过制定names参数,指定表头
colnames = ['weather','Temperature','Humidity','Wind','Golfplay']
df = pd.read_csv('../data/play_noheader.txt',sep=',',encoding='utf-8',header=None,names = colnames)
print(df.shape)#查看数据行列
df.head()#查看前5行
当然也可以在读取进来后,设置表头字段名。
df.columns = colnames
读取其他分隔符的文件
读取其他分隔符的文件时,只需要指定sep参数分隔符即可。如我们这里有一份以?分隔的文本文件。
df = pd.read_csv('../data/play_sep.txt',sep='?',encoding='utf-8')
print(df.shape)#查看数据行列
df.head()#查看前5行
几个非常用参数
- dtype 读取时指定字段类型,有些时候默认读入时,字段类型识别的不对,这时我们可以通过指定dtype参数强制设置字段类型。
- skiprows 读取时跳过前n行,有时候文件的前n行不是我们需要的,可以直接设置skiprows进行跳过不读入。
- skipfooter 读取时跳过后n行,有时候文件的后n行不是我们需要的,可以直接设置skipfooter进行跳过不读入。
- nrows 现在只读入n行数据,有时候要读取的文件太大,而我们只想简单看看这个数据都有哪些字段等信息,可以设置只读取n行数据,快速查看。
使用skiprows和skipfooter时,需配合使用参数 engine = 'python'
df = pd.read_csv('../data/housing.csv',dtype={'Year.Built':'str'})
df.info()
df = pd.read_csv('../data/housing.csv',skiprows= 1000,engine='python')
df = pd.read_csv('../data/housing.csv',skipfooter = 1000,engine='python')
df = pd.read_csv('../data/housing.csv',nrows = 100)
df.shape
写出你的第一个文件
在`pandas`中,与`read_csv`相对应地,也存在写出函数`to_csv`。
常用的几个参数:
1. 文件路径:这个毫无疑问,不然程序怎么知道你要把文件输出到哪里
2. 分隔符sep:默认为',',具体的根据你的文件中具体的分隔符来指定。常见的有'\t',',','|'等。
3. 编码方式encoding:默认为'utf-8',也可能是其他方式,常见的编码方式有utf-8,gbk,utf-16等。
4. header:只能设置为True或False,默认为True,把第一行数据当做表头。当读入无表头的数据时,要将其设置为False。
5. index:输出文件是否带索引,推荐设置为False,不带索引列。
如我们这里将上文中的df写出到data目录下,命名为play_output.csv,设置分隔符为|,编码方式为utf-8,带表头,不带索引。
df.to_csv('../data/play_output.csv',index=False,encoding='utf-8',sep='|')