[人工智能自学] 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 数据可视化

相关推荐
通信.萌新5 分钟前
深度学习——pytorch基础入门
人工智能·pytorch·深度学习
morning_judger7 分钟前
【Python学习系列】数据类型(二)
开发语言·python·学习
MC何失眠21 分钟前
vulnhub靶场【DC系列】之7
网络·学习·安全·web安全·网络安全
雪球小梦22 分钟前
OpenAI掌舵人解读OpenAI新进展:迈向超级智能。
人工智能·chatgpt
mengzhi啊31 分钟前
ue5 蒙太奇,即上半身动画和下半身组合在一起,并使用。学习b站库得科技
学习·ue5
XianxinMao31 分钟前
GOT-OCR2.0:突破性端到端架构与高精度文本识别的技术创新
人工智能·深度学习
徐礼昭|商派软件市场负责人32 分钟前
支持各大平台账单处理,支持复杂业财数据的精细化对账|商派OMS
大数据·数据库·人工智能·oms·财务对账
一叶知秋h36 分钟前
ZYNQ初识10(zynq_7010)UART通信实验
笔记·学习·zynq
取个名字真难呐44 分钟前
21、Transformer Masked loss原理精讲及其PyTorch逐行实现
人工智能·pytorch·python·深度学习·矩阵·transformer
无所谓จุ๊บ1 小时前
VTK知识学习(33)-交互问题2
学习·vtk