如何用Pandas读/存数据

1. 序言
读取数据往往是做数据分析的第一步,本文只是简单的针对一些问题的解决方案,未来当大家遇到类似问题的时候,应该可以借鉴。

统一使用 Pandas 来读取数据:

# 导入 pandas 模块
import pandas as pd

在这里插入图片描述
这是每次重新开始数据分析之前,都需要运行的代码,以后凡是见到包含 pd. 的代码,就表示我们已经运行了这行代码。

输入 pd.read 后,按 Tab 键,系统将把以 read 开头的函数和模块都列出来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0UPH4tKp-1585035180094)(https://mmbiz.qpic.cn/mmbiz_jpg/giaycic3UNwo1qdUlIxN02DXYxEBS5AsiabJ7Df7byuoRseJVzzPb3whR69M2usxxszSiadx9lsTWIERsvHKGVbGIg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)]

运行以下代码:

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’)

翻译自凹凸数据
翻译自林骥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值