当前位置: 首页 > article >正文

[人工智能自学] Python包学习-pandas

紧接上篇numpy的学习教程
本篇参考:
Pandas 教程|菜鸟教程
官方教程 - 10分钟入门pandas¶
joyful-pandas
pandas中文教程
它建立在 NumPy 库的基础之上,提供了高效的数据结构和数据分析工具,使得在 Python 中进行数据操作变得更加容易和高效。

Pandas 提供了丰富的功能,包括:
数据清洗:处理缺失数据、重复数据等。
数据转换:改变数据的形状、结构或格式。
数据分析:进行统计分析、聚合、分组等。
数据可视化:通过整合 Matplotlib 和 Seaborn 等库,可以进行数据可视化。

核心数据结构

Series(一维数据结构)

存储不同类型的数据,如整数、浮点数、字符串等。它由一组数据和与之相关的索引组成。索引默认是从 0 开始的整数序列,但也可以自定义。

s = pd.Series([1,3,5,np.nan,6,8])

0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64

数据访问:
可以通过索引来访问 Series 中的元素。例如,要获取 ‘City B’ 的人口数量,可以使用population[‘City B’],它会返回 200000。

DataFrame(二维数据结构)

类似于电子表格或者 SQL 表。它是一个二维表格,由行索引、列索引和数据组成。每列的数据类型可以不同。

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Math': [90, 80, 70],
        'English': [85, 75, 90]}
df = pd.DataFrame(data)

例子2:

df2 = pd.DataFrame({ 'A' : 1.,
                     'B' : pd.Timestamp('20130102'),
                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                     'D' : np.array([3] * 4,dtype='int32'),
                     'E' : pd.Categorical(["test","train","test","train"]),
                     'F' : 'foo' })

在这里插入图片描述

可以通过列名来访问列数据,如df[‘Math’]会返回包含数学成绩的 Series。也可以通过loc(基于标签的索引)和iloc(基于整数位置的索引)来访问行和列。例如,df.loc[0, ‘Name’]会返回第一行(索引为 0)的 ‘Name’ 列的值,即 ‘Alice’;df.iloc[1, 2]会返回第二行(索引为 1)第三列(索引为 2)的值,即 90。
两个series可以拼接成1个dataFrame

series和dataframe的关系:

在这里插入图片描述

import pandas as pd

# 创建两个Series对象
series_apples = pd.Series([1, 3, 7, 4])
series_bananas = pd.Series([2, 6, 3, 5])

# 将两个Series对象相加,得到DataFrame,并指定列名
df = pd.DataFrame({ 'Apples': series_apples, 'Bananas': series_bananas })

# 显示DataFrame
print(df)

在这里插入图片描述

数据读取和写入

读取数据

读取多种格式的数据,如 CSV、Excel、SQL 数据库等。
以读取 CSV 文件为例,使用read_csv函数。假设我们有一个名为 ‘data.csv’ 的文件,其中包含一些数据:

df = pd.read_csv('data.csv')

从 CSV 文件读取数据并加载为 DataFrame
filepath_or_buffer (路径或文件对象),sep (分隔符),header (行标题),names (自定义列名),dtype (数据类型),index_col (索引列)
在这里插入图片描述

写入数据

可以将 DataFrame 的数据写入到各种格式的文件中。例如,要将 DataFrame 写入到 CSV 文件,可以使用to_csv函数:

df.to_csv('new_data.csv', index=False)

index=False表示不将行索引写入文件。如果要写入 Excel 文件,可以使用to_excel函数。
在这里插入图片描述

数据处理

head()

head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。

df = pd.read_csv('nba.csv')

在这里插入图片描述

import pandas as pd

df = pd.read_csv('nba.csv')

print(df.head(10))

tail()

tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。

info()

返回表格的一些基本信息:

import pandas as pd

df = pd.read_csv('nba.csv')

print(df.info())

在这里插入图片描述

Excel

在这里插入图片描述

JSON

在这里插入图片描述

数据分析和操作

清洗空值

删除包含空字段的行,可以使用 dropna() 方法

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。
how:默认为 ‘any’ 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=‘all’ 一行(或列)都是 NA 才去掉这整行。
thresh:设置需要多少非空值的数据才可以保留下来的。
subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。

通过 isnull() 判断各个单元格是否为空。

import pandas as pd

df = pd.read_csv('property-data.csv')

print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

在这里插入图片描述
Pandas 把 n/a 和 NA 当作空数据,na 不是空数据,不符合我们要求,我们可以指定空数据类型

import pandas as pd

missing_values = ["n/a", "na", "--"]
df = pd.read_csv('property-data.csv', na_values = missing_values)

print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

在这里插入图片描述

查看数据

在这里插入图片描述

数据清洗

在这里插入图片描述

相关性热图(Correlation Heatmap)

数据准备

import pandas as pd
data = {'Math': [90, 80, 70, 85, 95],
        'Chinese': [80, 75, 70, 80, 85],
        'English': [80, 75, 70, 80, 85],
        'Physics': [90, 80, 70, 85, 95],
        'Chemistry': [80, 75, 70, 80, 85]}
df = pd.DataFrame(data)

计算相关性矩阵

correlation_matrix = df.corr()
print(correlation_matrix)
      Math  Chinese  English  Physics  Chemistry

Math 1.0 0.8 0.8 1.0 0.8
Chinese 0.8 1.0 1.0 0.8 1.0
English 0.8 1.0 1.0 0.8 1.0
Physics 1.0 0.8 0.8 1.0 0.8
Chemistry 0.8 1.0 1.0 0.8 1.0

绘制相关性热图(以 Seaborn 为例)

import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.show()

数据排序与聚合

在这里插入图片描述

Pandas 数据可视化

在这里插入图片描述


http://www.kler.cn/a/501904.html

相关文章:

  • 使用Deepseek搭建类Cursor编辑器
  • 使用 versions-maven-plugin 和 flatten-maven-plugin 插件惯例 maven 项目版本
  • 【Vue实战】Vuex 和 Axios 拦截器设置全局 Loading
  • NLP三大特征抽取器:CNN、RNN与Transformer全面解析
  • python-42-使用selenium-wire爬取微信公众号下的所有文章列表
  • 基于单片机的智能花卉浇水系统的设计与实现
  • Nginx防止点击劫持:X-Frame-Options
  • 【IDEA版本升级JDK21报错方法引用无效 找不到符号】
  • 【Ubuntu与Linux操作系统:三、用户与组管理】
  • 【Linux】深刻理解软硬链接
  • KylinV10安装CDH6.3.1
  • SpringBoot 基础学习
  • 蓝桥杯_B组_省赛_2022(用作博主自己学习)
  • 人工智能:人形机器人的开发需求会创造哪些热门的就业岗位?
  • 基于深度学习的视觉检测小项目(十二) 使用线条边框和渐变颜色美化界面
  • JSON转EXCEL
  • 《零基础Go语言算法实战》【题目 2-27】goroutine 的使用问题
  • MPLS原理及配置
  • 【SpringBoot】用一个常见错误说一下@RequestParam属性
  • 解锁“搭子小程序”开发新机遇,助力企业数字化转型
  • 【SH】Xiaomi9刷Windows10系统研发记录 、手机刷Windows系统教程、小米9重装win10系统
  • HTML实战课堂之简单的拜年程序
  • 4G、5G移远模块SIM卡热插拔问题解决
  • 10.Linux 时间
  • 一文讲解常见API开发工具
  • 【机器学习:十、神经网络概述】