写点什么

Pandas 数据读取三连“坑”

  • 2024-05-31
    湖南
  • 本文字数:1853 字

    阅读完需:约 6 分钟

引导

大家小时候有没有用玩儿过一种飞行棋,两个人玩儿,摇骰子摇到几然后就相应的往前走几步,看谁先到终点谁就胜利了。在玩儿的途中,地图上有很多奖励或者陷阱,有的时候运气不好,连中好几个陷阱不但没有前进反而还后退了。


这不最近再看 Pandas 数据读取的知识时候,我就踩了好几个小坑,幸亏把学习文档上的提供的 demo 进行了验证,不然在以后项目应用的时候再遇到了岂不是挺尴尬了。


好了,让我们走进数据读取的数据大森林吧🌲🌲🌲

提供

我们知道 Pandas 库主要是数据读取和数据清洗的。数据读取的是否准确没有遗漏这是非常重要的。之前我们有时候要读取数据的时候手写 IO 流进行读取,也是挺麻烦的了🙃,Pandas 库解决了我们这一部分的烦恼,给我们提供了非常丰富的读取数据的函数。


针对数据存储的格式不同,相应的读取方式也是不同的。我们常用的有这么几种,简单介绍一下:

  1. read_csv()函数: 专门读取.csv 格式的文件。

  2. read_excel()函数:读取 excel 格式的数据。

  3. read_sql()函数:在数据区读取数据。

  4. read_json()函数:在 json 字符串中读取数据。

  5. read_html()函数:专门读取 html 页面中的数据。


这些函数不是很难,传递的参数基本上都差不多都需要文件名,read_sql()函数函数比较特殊,因为它是直接从数据库读取数据。


文件读取方式就是这么多。我们肯定得一一验证,不然怎能发现其中是否有坑呢?就像电影的结局说的那样 “法相在皮相之内,真身在假身之中”。

验证

这里为了节约时间,其他的函数代码直接验证一笔带过,相关代码:

"""@Created on : 2024/5/30 10:27@creator : er_nao@File :pandas_07_常用函数.py@Description :"""import pandas as pd
import pymysql# 1.csvprint('使用csv')df1 = pd.read_csv('../property-data.csv')print(df1)print('\n')
# 3.sql
print('使用sql')# 设置数据库连接参数db_connection = pymysql.connect(host='127.0.0.1', user='root', passwd='root', database='library', charset='utf8mb4')sql = "SELECT * FROM book_info"df3 = pd.read_sql(sql, db_connection)print(df3.to_string())
# 4.jsonprint('使用json')df4 = pd.read_json('../list_json.json')print(df4.to_string())print('\n')
# 输出结果
# 使用csv# PID ST_NUM ST_NAME OWN_OCCUPIED NUM_BEDROOMS NUM_BATH SQ_FT# 0 100001000.0 104.0 PUTNAM Y 3 1 1000# 1 100002000.0 197.0 LEXINGTON N 3 1.5 --### 使用sql## id name author publish isbn introduction language price publish_date type_id status# 0 1 西游记 施耐庵 机械工业出版社 100011 师徒四人去西天取真经 中文 42.0 2020-03-20 1 0# 1 2 三国演义 罗贯中 清华大学出版社 100012 东汉末年分三国。。。 中文 48.0 2018-03-30 1 1## 使用json# school_name class students# 0 ABC primary school Year 1 {'id': 'A001', 'name': 'Tom', 'math': 60, 'physics': 66, 'chemistry': 61}
复制代码

可以看到,三种数据读取的方法是没问题的👌。还有两个数据读取的函数没有验证,我们意义验证一下。

read_excel()函数 相关验证结果:

看到这儿我就头疼,既然这样的话,我们就将单斜杠改成双斜杠试试。

又是另外的问题,缺少 openpyxl 库,唉。。。😓😑那就就继续去装库吧。这个安装很简单我们就用 pip 安装就行,相关命令:pip install openpyxl。安装图示:


好了,安装完成了。回到编辑器中运行测试一下。正常输入了,🧐也不报错了。嗯!控制台真是个好东西。

接下来我们看看 read_html 函数的表现。

这个函数也报错了,但是这个报错是不是似曾相识呢?没错跟 read_excel 函数的报错信息很像,都是找不到相应的库,既然这样,我们就再把上面的装库步骤进行一遍呗。lxml 库的安装相关命令: pip install lxml,安装完成同样我们可以在 pip 列表中看到。

回到我们的 demo 中重新运行程序。结果又报没有 html5lib 库因为我们是直接获取页面上的数据的,页面就是 html,所以 pyhton 得进行解析。相关命令 pip install html5lib


再次运行我们的程序,是成功的。(PS:为什么之前的爬取链接和成功的爬取连接不一样?因为之前那个链接的页面没有表格数据,所以换了一下!)

作者:二闹

链接:https://juejin.cn/post/7374608035837198399

用户头像

欢迎关注,一起学习,一起交流,一起进步 2020-06-14 加入

公众号:做梦都在改BUG

评论

发布
暂无评论
Pandas数据读取三连“坑”_Python_我再BUG界嘎嘎乱杀_InfoQ写作社区