2023/08/22

pandas笔记-1

好的,这是对您提供的关于 Pandas 的文章进行格式化、修正和优化的 Markdown 版本。

我已完成以下工作:

  1. 转换为 Markdown 格式:使用了标题、列表、表格和代码块,使其更具可读性。

  2. 删除错误和Traceback:移除了代码执行的完整错误堆栈,并修正了导致错误的代码。

  3. 优化代码和注释

    • 将效率低下的 for 循环数据清洗代码替换为 Pandas 推荐的向量化操作。

    • 修正了方法调用中的小错误(如 value_counts 忘记加 ())。

    • 补充了注释,解释了错误原因和推荐做法。

  4. 调整结构和语言:使文章的逻辑更清晰,语言更流畅。


Pandas 入门教程

参考资料

Pandas 主要用于处理表格类型的数据,它提供了强大的数据结构和分析工具。

Pandas 读取数据

Pandas 可以从多种数据源读取数据并转换为 DataFrame 对象。

数据类型说明读取函数
csv, tsv, txt逗号/Tab分隔的纯文本文件pd.read_csv()
excel微软 xls 或 xlsx 文件pd.read_excel()
mysql关系型数据库pd.read_sql()

读取纯文本文件 (CSV, TXT)

输出:

读取 Excel 文件

输出:

从 MySQL 数据库读取

新版本的 Pandas 推荐使用 SQLAlchemy 来创建数据库连接,以保证最佳的兼容性。直接使用 pymysql 等库的连接对象可能会出现以下警告:

UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy.

推荐做法如下:

输出:

Pandas 数据结构

Series (一维数据)

Series 是一种类似于一维数组的对象,它由一组数据和一组相关的数据标签(即索引)组成。可以看作是带标签的一维数组。

输出:

输出:

DataFrame (二维数据)

DataFrame 是一个表格型的数据结构,可以看作是由多个 Series 组成的字典。

  • 每列可以是不同的值类型(数值、字符串、布尔值等)。

  • 同时拥有行索引(index)和列索引(columns)。

输出:

从 DataFrame 中查询 Series

  • 查询单行单列,返回的是 pd.Series

  • 查询多行多列,返回的是 pd.DataFrame

输出:

输出:

输出:

输出:


Pandas 数据查询

Pandas 提供了多种强大的查询方式,其中 .loc.iloc 最为常用。

  1. df.loc: 根据行、列的标签值进行查询。

  2. df.iloc: 根据行、列的数字位置进行查询。

  3. df.where: 根据条件进行筛选,不满足条件的位置用 NaN 填充。

  4. df.query: 使用字符串表达式进行查询。

使用 df.loc 查询数据(推荐)

.loc 非常灵活,支持多种查询方式,并且可以用于数据赋值。

准备数据: 首先,我们加载天气数据并进行一些预处理。

输出:

日期最高温最低温天气风力风向
2013-01-01-3-13晴~晴间多云北风4-5级
2013-01-02-6-14晴间多云北风4-5级
2013-01-03-4-13晴间多云~晴无持续风向微风
2013-01-04-3-11无持续风向微风
2013-01-05-2-12晴~晴间多云无持续风向微风

1. 使用单个标签值查询

df.loc[row_label, column_label]

输出:

2. 使用列表批量查询

输出:

日期最高温天气
2013-06-0333晴间多云~晴转多云
2013-06-0426阴有阵雨,北部地区有雷电

3. 使用切片进行范围查询

输出:

日期最低温天气风力风向
2013-06-0118晴间多云~多云间阴,北部山区有阵雨无持续风向微风
2013-06-0218阴有雾霾,午后-傍晚有雷阵雨~阴有雾霾,北部阵雨转晴无持续风向微风
2013-06-0319晴间多云~晴转多云无持续风向微风
2013-06-0418阴有阵雨,北部地区有雷电无持续风向微风
2013-06-0519阴有时有阵雨,有雾~阴有零星小雨,有雾无持续风向微风

4. 使用条件表达式查询

输出: (部分)

日期最高温最低温天气风力风向
2013-01-01-3-13晴~晴间多云北风4-5级
2013-01-02-6-14晴间多云北风4-5级
...............

输出:

日期最高温最低温天气风力风向
2013-04-1962小雨~阴无持续风向微风

5. 调用函数查询


Pandas 新增数据列

1. 直接赋值

输出:

日期...温差
2013-01-01...10
.........

2. 使用 df.apply 方法

apply 可以将一个函数应用到 DataFrame 的行或列上。

输出:

日期...温差体感
2013-01-01...10寒冷
............

3. 使用 df.assign 方法

assign 方法可以一次性添加多个新列,并返回一个新的 DataFrame 对象,原 DataFrame 不变。

4. 按条件选择分组分别赋值

输出:


Pandas 数据统计函数

1. 汇总类统计

df.describe() 可以快速获取所有数值列的汇总统计信息。

mean(), min(), max() 等可以计算单个 Series 的统计值。

输出:

2. 按值计数 value_counts()

输出:

3. 相关系数和协方差

  • 协方差 cov(): 衡量两个变量的同向/反向变化程度。

  • 相关系数 corr(): 标准化后的协方差,衡量两个变量的线性相关性强弱,取值范围在 [-1, 1] 之间。

输出:

从结果可以看出,最高温和最低温有非常强的正相关性 (0.9315),符合常识。

0 评论:

发表评论