1. 序言
读取数据往往是做数据分析的第一步,本文只是简单的针对一些问题的解决方案,未来当大家遇到类似问题的时候,应该可以借鉴。
统一使用 Pandas 来读取数据:
# 导入 pandas 模块
import pandas as pd
这是每次重新开始数据分析之前,都需要运行的代码,以后凡是见到包含 pd. 的代码,就表示我们已经运行了这行代码。
输入 pd.read 后,按 Tab 键,系统将把以 read 开头的函数和模块都列出来。
运行以下代码:
pd.*read*?
返回的结果是 Pandas 中所有包含 read 的函数和模块,可以看出 Pandas 能够读取的数据类型有很多,我选择几个常用的函数进行简要的介绍。
Pandas的读取文件的相关参数
2.读取/存储CSV文件
filepath 文件路径。该字符串可以是一个URL。有效的URL方案包括http,ftp和file
sep 分隔符。read_csv默认为“,”,read_table默认为制表符“[Tab]”。
header 接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别。
names 接收array。表示列名。
index_col 表示索引列的位置,取值为sequence则代表多重索引。
dtype 代表写入的数据类型(列名为key,数据格式为values)。
engine 接收c或者python。代表数据解析引擎。默认为c。
nrows 接收int。表示读取前n行。
pd.read_table(
filepath_or_buffer, sep='\t', header='infer', names=None,
index_col=None, dtype=None, engine=None, nrows=None)
pd.read_csv(
filepath_or_buffer, sep=',', header='infer', names=None,
index_col=None, dtype=None, engine=None, nrows=None)
DataFrame.to_csv(excel_writer=None, sheetname=None, header=True, index=True, index_label=None, mode=’w’, encoding=None)
3.读取与存储excel
io 表示文件路径。
sheetname 代表excel表内数据的分表位置。默认为0。
header 接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别。
names 表示索引列的位置,取值为sequence则代表多重索引。
index_col 表示索引列的位置,取值为sequence则代表多重索引。
dtype 接收dict。数据类型。
pandas.read_excel(io, sheetname=0, header=0, index_col=None, names=None, dtype=None)
DataFrame.to_excel(excel_writer=None, sheetname=None, header=True, index=True, index_label=None, mode=’w’, encoding=None)
4.读取与存储JSON:
# 通过json模块转换为字典,再转换为DataFrame
pd.read_json('../ratings.json')
5.DataFrame转HTML
比如,我们先设定这样一个 DataFrame:
import numpy as np
import pandas as pd
import random
n = 10
df = pd.DataFrame(
{
"col1": np.random.random_sample(n),
"col2": np.random.random_sample(n),
"col3": [[random.randint(0, 10) for _ in range(random.randint(3, 5))] for _ in range(n)],
}
)
用上 to_html,就可以将表格转入 html 文件:
df_html = df.to_html()
with open(‘analysis.html’, ‘w’) as f: f.write(df_html)
与之配套的,是 read_html 函数,可以将 HTML 转回 DataFrame。
6.DataFrame 转 LaTeX
要把 DataFrame 值转成 LaTeX 表格,也是一个函数就搞定了:
df.to_latex()
7.DataFrame 转 Markdown
如果你想把代码放到 GitHub 上,需要写个 README。
这时候,你可能需要把 DataFrame 转成 Markdown 格式。
Pandas 同样为你考虑到了这一点:
df.to_markdown()
8.DataFrame 转字符串
df.to_string()
9.节省磁盘空间
Pandas在保存数据集时,可以对其进行压缩,其后以压缩格式进行读取。
先打开一个 300MB 的 DataFrame,把它存成 csv。
df = pd.DataFrame(pd.np.random.randn(50000,300))
df.to_csv(‘random_data.csv’, index=False)
压缩一下试试:
df.to_csv(‘random_data.gz’, compression=’gzip’, index=False)
gzip压缩文件可以直接读取:
df = pd.read_csv(‘random_data.gz’)