Pandas实现在线文件和剪贴板数据读取详解
本文详细介绍Pandas中两种高效的数据读取方式:利用read_html直接解析网页表格,以及通过read_clipboard快速导入剪贴板数据。文章涵盖在线HTML与CSV文件的读取技巧,并提供具体代码示例与操作注意事项,帮助开发者简化数据获取流程。
前言
大家好,我是Peter~
本文主要记录Pandas中两种相对少见但实用的文件读取方式:
- 如何读取在线文件的数据
- 如何读取剪贴板中的数据
声明:本文所使用的案例和在线数据仅用于学术分享目的
read_html
该函数用于直接读取在线HTML文件,通常针对表格形式的数据。它是将HTML表格快速转换为DataFrame的一种便捷方法。
此方法在合并来自不同网页的表格时尤为有用,能够省去先爬取数据再读取的繁琐步骤。
具体函数的参数说明如下:
pandas.read_html(io, # 文件 io 对象;路径或者io.Strings对象
match='.+', # str 或编译的正则表达式,可选
flavor=None, # 要使用的解析引擎, None是默认值
header=None, # 文件表头
index_col=None, # 索引
skiprows=None, # 跳过行
attrs=None, # 属性
parse_dates=False, # 日期解析
thousands=',', # 千分位
encoding=None, # 编码
decimal='.', # 识别为小数点的字符
converters=None, # 属性转换
na_values=None, # 空值信息
keep_default_na=True, # 是否保持空值
displayed_only=True # 是否应该解析带有“display:none” 的元素
)
在线文件1
以读取维基百科上历届奥运会乒乓球冠军的相关数据为例。该地址下包含部分表格形式的数据:


In [3]:
url = "https://zh.m.wikipedia.org/zh/%E5%A5%A5%E6%9E%97%E5%8C%B9%E5%85%8B%E8%BF%90%E5%8A%A8%E4%BC%9A%E4%B9%92%E4%B9%93%E7%90%83%E5%A5%96%E7%89%8C%E5%BE%97%E4%B8%BB%E5%88%97%E8%A1%A8"
df = pd.read_html(url)
df
Out[3]:
观察发现,此时读取到的df是一个列表,总长度为15。
list
In [4]:
len(df)
Out[4]:
9
查看列表中的部分元素,可以看到它们均为DataFrame格式的数据。


在线文件2
以下是一个国外网站下的数据示例:

In [7]:
df1 = pd.read_html("https://www.fdic.gov/resources/resolutions/bank-failures/failed-bank-list")
type(df1)
Out[7]:
list
In [8]:
len(df1)
Out[8]:
1
In [9]:
df1[0]
Out[9]:

读取在线CSV文件
以读取GitHub上的一个CSV文件为例:
方式1:直接读取
url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
pd.read_csv(url)

方式2:通过io.Strings对象
url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
response=requests.get(url).content # 先发请求
df2 = pd.read_csv(io.StringIO(response.decode('utf-8')))
df2 # 效果同上
Pandas读取剪贴板
pandas.read_clipboard(sep='\\s+', **kwargs)

官网地址
一个简单的例子说明函数使用:假设本地目录下存在如下Excel表格数据

1、先选中并复制数据:【Ctrl + C】

2、运行代码下方的代码,按下MacOS中的【向上的箭头】 + 【回车键】,即可完成读取
Windows系统下对应的操作应为【Shift + Enter】
如果数据量较小,这种方式可以省去通过Excel或CSV文件读取的时间:

以上就是Pandas实现在线文件和剪贴板数据读取详解的详细内容,更多关于Pandas数据读取的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













