Pandas数据读取三连“坑”

简介: 大家小时候有没有用玩儿过一种飞行棋,两个人玩儿,摇骰子摇到几然后就相应的往前走几步,看谁先到终点谁就胜利了。在玩儿的途中,地图上有很多奖励或者陷阱,有的时候运气不好,连中好几个陷阱不但没有前进反而还后退了。这不最近再看Pandas数据读取的知识时候,我就踩了好几个小坑,幸亏把学习文档上的提供的demo进行了验证,不然在以后项目应用的时候再遇到了岂不是挺尴尬了。

引导

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

这不最近再看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.csv
print('使用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.json
print('使用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()函数 相关验证结果:

1717153587568.jpg

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

1717153603650.jpg

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

1717153625110.jpg

1717153685492.jpg

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

1717153694401.jpg

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

1717153704456.jpg

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

1717153730181.jpg

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


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

1717153737487.jpg

相关文章
|
1月前
|
Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数变换数据。示例代码:导入pandas,定义一个包含'Name'和'Age'列的DataFrame,使用`melt()`转为长格式,再用`pivot()`恢复为宽格式。
57 1
|
1月前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
39 2
|
1月前
|
存储 Python
使用Pandas库对非数值型数据进行排序和排名
在Pandas中,支持对非数值型数据排序和排名。可按以下方法操作:1) 字符串排序,使用`sort_values()`,如`sorted_df = df.sort_values(by='Name', ascending=False)`进行降序排序;2) 日期排序,先用`to_datetime()`转换,再排序,如`sorted_df = df.sort_values(by='Date')`;3) 自定义排序,结合`argsort()`和自定义规则。
44 2
|
1月前
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
Pandas的`merge()`函数用于数据合并,如示例所示,根据'key'列对两个DataFrame执行内连接。`concat()`函数用于数据拼接,沿轴0(行)拼接两个DataFrame,并忽略原索引。
57 2
|
1月前
|
数据挖掘 索引 Python
如何在Python中,Pandas库实现对数据的时间序列分析?
【4月更文挑战第21天】Pandas在Python中提供了丰富的时间序列分析功能,如创建时间序列`pd.date_range()`,转换为DataFrame,设置时间索引`set_index()`,重采样`resample()`(示例:按月`'M'`和季度`'Q'`),移动窗口计算`rolling()`(如3个月移动平均)以及季节性调整`seasonal_decompose()`。这些工具适用于各种时间序列数据分析任务。
31 2
|
1月前
|
存储 JSON 数据处理
从JSON数据到Pandas DataFrame:如何解析出所需字段
从JSON数据到Pandas DataFrame:如何解析出所需字段
71 1
|
1月前
|
数据采集 监控 数据可视化
Pandas平滑法时序数据
【5月更文挑战第17天】本文介绍了使用Python的Pandas库实现指数平滑法进行时间序列预测分析。指数平滑法是一种加权移动平均预测方法,通过历史数据的加权平均值预测未来趋势。文章首先阐述了指数平滑法的基本原理,包括简单指数平滑的计算公式。接着,展示了如何用Pandas读取时间序列数据并实现指数平滑,提供了示例代码。此外,文中还讨论了指数平滑法在实际项目中的应用,如销售预测和库存管理,并提到了在`statsmodels`库中使用`SimpleExpSmoothing`函数进行模型拟合和预测。最后,文章强调了模型调优、异常值处理、季节性调整以及部署和监控的重要性,旨在帮助读者理解和应用这一方法
30 2
 Pandas平滑法时序数据
|
1月前
|
数据挖掘 数据处理 索引
使用Pandas从Excel文件中提取满足条件的数据并生成新的文件
使用Pandas从Excel文件中提取满足条件的数据并生成新的文件
33 1
|
1月前
|
Python
如何使用Python的Pandas库进行数据缺失值处理?
Pandas在Python中提供多种处理缺失值的方法:1) 使用`isnull()`检查;2) `dropna()`删除含缺失值的行或列;3) `fillna()`用常数、前后值填充;4) `interpolate()`进行插值填充。根据需求选择合适的方法处理数据缺失。
70 9
|
1月前
|
数据采集 数据处理 索引
如何使用 Pandas 删除 DataFrame 中的非数字类型数据?
如何使用 Pandas 删除 DataFrame 中的非数字类型数据?
40 3