- 一、官网用户指南
- 二、数据读取
- 2.1 查看当前目录
- 2.2 最简单的读取csv和excel文件
- 2.3 读取前20行
- 2.4 跳过前20行
- 2.5 读取全部偶数行/奇数行
- 2.6 按列号和列名读取指定列
- 2.7 读取包含在指定列表中的列
- 2.8 读取数据时指定索引列
- 2.9 读取指定列,并设置列标题
- 2.10 读取数据时不将缺失值标记为NaN,默认填充为空字符串
- 2.11 读取数据时,将[]标记为缺失值
- 2.12 读取数据时,忽略缺失值,默认填充为空字符串
- 2.13 读取数据时,指定列的格式为字符串
- 2.14 读取数据时,指定列的格式为时间
- 2.15 分块读取数据
- 2.16 读取其他格式的文件
- 三、数据存储
- 3.1 DF保存为 csv
- 3.2 DF指定列保存为csv
- 3.3 DF保存为 csv,忽略索引 / 指定索引名称
- 3.4 DF保存为 csv,缺失值指定为特定字符串
- 3.5 DF压缩保存为zip文件
- 3.6 DF保存为 Excel
- 3.7 DF保存为 JSON
- 3.8 DF保存为 Markdown
- 3.9 DF保存为 Html
视频讲解:
【Python百日基础系列】 Pandas 数据读取与存储
一、官网用户指南https://pandas.pydata.org/docs/user_guide/io.html
| 格式 | 数据描述 | 读方法 | 写方法 |
|---|---|---|---|
| 文本 | CSV | read_csv | to_csv |
| 文本 | Fixed-Width 文本 File | read_fwf | |
| 文本 | JSON | read_json | to_json |
| 文本 | HTML | read_html | to_html |
| 文本 | LaTeX | Styler.to_latex | |
| 文本 | XML | read_xml | to_xml |
| 文本 | Local clipboard | read_clipboard | to_clipboard |
| 二进制 | MS Excel | read_excel | to_excel |
| 二进制 | Opendocument | read_excel | |
| 二进制 | HDF5 Format | read_hdf | to_hdf |
| 二进制 | Feather Format | read_feather | to_feather |
| 二进制 | Parquet Format | read_parquet | to_parquet |
| 二进制 | ORC Format | read_orc | |
| 二进制 | Stata | read_stata | to_stata |
| 二进制 | SAS | read_sas | |
| 二进制 | SPSS | read_spss | |
| 二进制 | Python Pickle Format | read_pickle | to_pickle |
| SQL | SQL | read_sql | to_sql |
| SQL | Google BigQuery | read_gbq | to_gbq |
数据的读写操作之前,务必确认当前目录,然后据此进行目录的走位调用
import os print(os.getcwd()) 输出结果: E:python_100py_1002.2 最简单的读取csv和excel文件
df = pd.read_csv('data.csv')
print(df)
df = pd.read_excel('../Top250.xlsx')
print(df)
2.3 读取前20行
df = pd.read_csv('data.csv', nrows=20)
print(df)
2.4 跳过前20行
df = pd.read_csv('data.csv', skiprows=20)
print(df)
2.5 读取全部偶数行/奇数行
# 跳过奇数行,取偶数行
df = pd.read_csv('data.csv', skiprows=lambda x: x!=0 and not x%2)
print(df)
# 跳过偶数行,取奇数行
df = pd.read_csv('data.csv', skiprows=lambda x: x%2)
print(df)
2.6 按列号和列名读取指定列
# 按列号读取指定列
df = pd.read_csv('data.csv', usecols=[0, 2, 3])
print(df)
# 按列名读取指定列
df = pd.read_csv('data.csv', usecols=['positionId', 'companyId', 'companySize'])
print(df)
2.7 读取包含在指定列表中的列
lst = ['positionId','test','positionName', 'test1','salary']
df = pd.read_csv('data.csv', usecols=lambda x: x in lst)
print(df)
2.8 读取数据时指定索引列
# 指定单层索引
df = pd.read_csv('data.csv', index_col='positionId')
print(df)
# 指定多层索引
df = pd.read_csv('data.csv', index_col=['positionId','positionName'])
print(df)
2.9 读取指定列,并设置列标题
注意:读取时指定列标题,只能使用列号读取,不能使用列名读取
# 读取时指定列标题,只能使用列号读取,不能使用列名读取
df = pd.read_csv('data.csv', usecols=[0, 1], names= ['ID', '岗位名称'])
print(df)
# 读取后修改列标题,可以使用列号或列名读取
df = pd.read_csv('data.csv', usecols=['positionId','positionName'])
df.columns = ['ID', '岗位名称']
print(df)
2.10 读取数据时不将缺失值标记为NaN,默认填充为空字符串
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName','plus'])
print(df)
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName','plus'], keep_default_na=True)
print(df)
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName','plus'], keep_default_na=False)
print(df)
w = df.loc[0, 'plus']
print(type(w), len(w), w=='')
2.11 读取数据时,将[]标记为缺失值
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName', 'aggregatePositionIds'], na_values=['[]'])
print(df)
2.12 读取数据时,忽略缺失值,默认填充为空字符串
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName', 'plus'])
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName', 'plus'], na_filter=False)
print(df)
w = df.loc[0, 'plus']
print(type(w), len(w), w=='')
2.13 读取数据时,指定列的格式为字符串
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName', 'companyId'])
print(df.dtypes)
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName', 'companyId'], dtype={'positionId':str, 'companyId':str})
print(df.dtypes)
2.14 读取数据时,指定列的格式为时间
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName', 'createTime'])
print(df.dtypes)
df = pd.read_csv('data.csv', usecols=['positionId', 'positionName', 'createTime'], parse_dates=['createTime'])
print(df.dtypes)
2.15 分块读取数据
chunks = pd.read_csv('data.csv', chunksize=10)
print(chunks)
for chunk in chunks:
print(chunk)
2.16 读取其他格式的文件
- 读取txt文件:pd.read_table("xxx.txt")
- 读取中文txt文件:pd.read_csv("xxx.txt",encoding='gb18030',sep = 't')
- 读取 JSON 文件:pd.read_json("xxx.json")
- 读取 HDF5 文件:pd.read_hdf("xxx.h5", "table")
- 读取剪贴板数据:pd.read_clipboard()
- 读取SQL数据:pd.read_sql('SELECt int_column, date_column FROM test_data', conn)
- 读取网页数据:pd.read_html("https://www.xxx.com/xxx.htm")[0]
df = pd.read_csv('data.csv')
print(df)
df.to_csv('df_bak.csv')
3.2 DF指定列保存为csv
df = pd.read_csv('data.csv')
print(df)
df.to_csv('df_bak.csv', columns=['positionId' ,'positionName'])
3.3 DF保存为 csv,忽略索引 / 指定索引名称
df = pd.read_csv('data.csv')
print(df)
df.to_csv('df_bak.csv', columns=['positionId' ,'positionName'], index=False)
df.to_csv('df_bak.csv', columns=['positionId' ,'positionName'], index_label='行号')
3.4 DF保存为 csv,缺失值指定为特定字符串
df = pd.read_csv('data.csv')
print(df)
df.to_csv('df_bak.csv', columns=['positionId' ,'plus'], na_rep='我是缺失值')
3.5 DF压缩保存为zip文件
df = pd.read_csv('data.csv')
print(df)
compression_options = dict(method='zip', archive_name='df_bak.csv')
df.to_csv('df_bak.zip', compression=compression_options)
3.6 DF保存为 Excel
df = pd.read_csv('data.csv')
print(df)
df.to_excel('df_bak.xlsx')
3.7 DF保存为 JSON
df = pd.read_csv('data.csv')
print(df)
df.to_json('df_bak.json')
3.8 DF保存为 Markdown
注意:需要先安装tabulate作为依赖包
pip install tabulate -i https://mirror.baidu.com/pypi/simple
df = pd.read_csv('data.csv')
print(df)
df.to_markdown('df_bak.md')
3.9 DF保存为 Html
df = pd.read_csv('data.csv')
print(df)
df.to_html('df_bak.html')



