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

紧接上篇numpy的学习教程

本篇参考:
Pandas 教程|菜鸟教程
官方教程 - 10分钟入门pandas¶
joyful-pandas
pandas中文教程

它建立在 NumPy 库的基础之上,提供了高效的数据结构和数据分析工具,使得在 Python 中进行数据操作变得更加容易和高效。

Pandas 提供了丰富的功能,包括:

数据清洗:处理缺失数据、重复数据等。

数据转换:改变数据的形状、结构或格式。

数据分析:进行统计分析、聚合、分组等。

数据可视化:通过整合 Matplotlib 和 Seaborn 等库,可以进行数据可视化。

核心数据结构

Series(一维数据结构)

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

python 复制代码
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 表。它是一个二维表格,由行索引、列索引和数据组成。每列的数据类型可以不同。

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

例子2:

python 复制代码
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的关系:

python 复制代码
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' 的文件,其中包含一些数据:

python 复制代码
df = pd.read_csv('data.csv')

从 CSV 文件读取数据并加载为 DataFrame

filepath_or_buffer (路径或文件对象),sep (分隔符),header (行标题),names (自定义列名),dtype (数据类型),index_col (索引列)

写入数据

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

python 复制代码
df.to_csv('new_data.csv', index=False)

index=False表示不将行索引写入文件。如果要写入 Excel 文件,可以使用to_excel函数。

数据处理

head()

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

python 复制代码
df = pd.read_csv('nba.csv')
python 复制代码
import pandas as pd

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

print(df.head(10))

tail()

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

info()

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

python 复制代码
import pandas as pd

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

print(df.info())

Excel

JSON

数据分析和操作

清洗空值

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

python 复制代码
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() 判断各个单元格是否为空。

python 复制代码
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 不是空数据,不符合我们要求,我们可以指定空数据类型

python 复制代码
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)

数据准备

python 复制代码
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)

计算相关性矩阵

python 复制代码
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 为例)

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

数据排序与聚合

Pandas 数据可视化

相关推荐
润 下13 分钟前
C语言——深入解析C语言指针:从基础到实践从入门到精通(二)
c语言·开发语言·经验分享·笔记·学习·程序人生
华为云开发者联盟16 分钟前
华为开发者空间携手乐知行:轻松实现智能网联小车数据可视化系
人工智能·华为开发者空间
王中阳Go20 分钟前
Python 的 PyPy 能追上 Go 的性能吗?
后端·python·go
云卓SKYDROID25 分钟前
飞控信号模块技术要点与难点分析
人工智能·无人机·航电系统·高科技·云卓科技
Goboy29 分钟前
控制仙术流程 - 抉择与循环的艺术
后端·python
文火冰糖的硅基工坊38 分钟前
[嵌入式系统-101]:AIoT(人工智能物联网)开发板
人工智能·物联网·重构·架构
麦麦大数据41 分钟前
F024 vue+flask电影知识图谱推荐系统vue+neo4j +python实现
vue.js·python·flask·知识图谱·推荐算法·电影推荐
说私域42 分钟前
开源AI智能名片链动2+1模式S2B2C商城小程序在个性化与小众化消费崛起中的营销宣传策略研究
人工智能·小程序
AI小云1 小时前
【Python与AI基础】Python编程基础:读写CSV文件
人工智能·python
知识分享小能手1 小时前
微信小程序入门学习教程,从入门到精通,电影之家小程序项目知识点详解 (17)
前端·javascript·学习·微信小程序·小程序·前端框架·vue