# 第三章 pandas数据读取与输出
# 3.1 数据读取
import pandas as pd
# pandas 读取csv文件。
# pd.read_csv('')
# pandas 读取excel文件。
# pd.read_excel('',sheet_name =文件名') # 返回数据框结构
'''
# data.json为同目录下的一个文件
pd.read_json(data.json) # 读取JSON文件
jdata={"res":{"model":"iPhone","browser":"Safari","version":"604.1"},"status":200}
pd.read_json(jdata)
dfs = pd.read_html(https://www.gairuo.com/p/pandas-io)
dfs[0] # 查看第一个df
# 读取网页文件,第一行为表头
dfs = pd.read_html(data.html, header=0)
# 第一列为索引
dfs = pd.read_html(url, index_col=0)
如果一个网页表格很多,可以指定元素来获取:
# id=table的表格,注意这里仍然可能返回多个
dfs1 = pd.read_html(url, attrs={id: table})
# dfs1[0]
# class=sortable
dfs2 = pd.read_html(url, attrs={class: sortable})
# 常用的参数与read_csv的基本相同。
# 需要安装SQLAlchemy库
from sqlalchemy import create_engine
# 创建数据库对象,SQLite内存模式
engine = create_engine(sqlite:///:memory:)
# 取出表名为data的表数据
with engine.connect() as conn, conn.begin():
data = pd.read_sql_table(data, conn)
# data
# 将数据写入
data.to_sql(data, engine)
# 大量写入
data.to_sql(data_chunked, engine, chunksize=1000)
# 使用SQL查询
pd.read_sql_query(SELECT * FROM data, engine)
# 数据分隔符默认是逗号,可以指定为其他符号
pd.read_csv(data, sep=\t) # 制表符分隔tab
pd.read_table(data) # read_table 默认是制表符分隔tab
pd.read_csv(data, sep=|) # 制表符分隔tab
pd.read_csv(data,sep="(?<!a)\|(?!1)", engine=python) # 使用正则
# 表头
pd.read_csv(data, header=0) # 第一行
pd.read_csv(data, header=None) # 没有表头
pd.read_csv(data, header=[0,1,3]) # 多层索引MultiIndex
# 列名
pd.read_csv(data, names=[列1, 列2]) # 指定列名列表
pd.read_csv(data, names=[列1, 列2], header=None)
# 索引
# 支持int、str、int序列、str序列、False,默认为None
pd.read_csv(data, index_col=False) # 不再使用首列作为索引
pd.read_csv(data, index_col=0) # 第几列是索引
pd.read_csv(data, index_col=年份) # 指定列名
pd.read_csv(data, index_col=[a,b]) # 多个索引
pd.read_csv(data, index_col=[0, 3]) # 按列索引指定多个索引
# 使用部分列
# 支持类似列表的序列和可调用对象
# 读取部分列
pd.read_csv(data, usecols=[0,4,3]) # 按索引只读取指定列,与顺序无关
pd.read_csv(data, usecols=[列1, 列5]) # 按列名,列名必须存在
# 指定列顺序,其实是df的筛选功能
pd.read_csv(data, usecols=[列1, 列5])[[列5, 列1]]
# 以下用callable方式可以巧妙指定顺序,in后面的是我们要的顺序
pd.read_csv(data, usecols=lambda x: x.upper() in [COL3, COL1])
# 返回序列
# 布尔型,默认为False
# 下例只取一列,会返回一个Series
pd.read_csv(data, usecols=[0], squeeze=True)
# 有两列则还是df
pd.read_csv(data, usecols=[0, 2], squeeze=True)
# 表头前缀
# 如果原始数据没有列名,可以指定一个前缀加序数的名称,如n0、n1,通过prefix参数指定前缀。
# 格式为字符型str
# 表头为c_0、c_2
pd.read_csv(data, prefix=c_, header=None)
# 3.2.10 处理重复列名
# 如果该参数为True,当列名有重复时,解析列名将变为X, X.1, …,X.N,而不是X, …, X。如果该参数为False,那么当列名中有重复时,前列将会被后列覆盖。
# 布尔型,默认为True
data = a,b,a\n0,1,2\n3,4,5
pd.read_csv(StringIO(data), mangle_dupe_cols=True)
# 表头为a b a.1
# False会报ValueError错误
# 3.2.11 数据类型
# dtype可以指定各数据列的数据类型,后续章节会专门介绍。
# # 传入类型名
深入浅出pandas——第三部分:pandas数据分析基础
于 2023-09-13 09:06:12 首次发布
博客涉及Pandas和JVM在数据分析中的应用。Pandas是强大的数据处理工具,JVM为Java程序提供运行环境,二者结合可有效开展数据分析工作,提升数据处理效率和分析能力。

最低0.47元/天 解锁文章

521

被折叠的 条评论
为什么被折叠?



