Pandas DataFrame学习

1.DataFrame定义

DataFrame 是 Pandas 中的另一个核心数据结构,用于表示二维表格型数据。DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。DataFrame提供各种功能进行数据访问、筛选、分割、合并、重塑、聚合以及转换等操作。

2.DataFrame特点

(1)二维结构: DataFrame 是一个二维表格,可以被看作是一个 Excel 电子表格或 SQL 表,具有行和列。可以将其视为多个 Series 对象组成的字典。

(2)列的数据类型: 不同的列可以包含不同的数据类型,例如整数、浮点数、字符串或 Python 对象等。

(3)索引:DataFrame 可以拥有行索引和列索引,类似于 Excel 中的行号和列标。

(4)大小可变:可以添加和删除列,类似于 Python 中的字典。

(5)自动对齐:进行算术运算或数据对齐操作时,DataFrame 会自动对齐索引。

(6)处理缺失数据:DataFrame 可以包含缺失数据,Pandas 使用 NaN(Not a Number)来表示。

(7)数据操作:支持数据切片、索引、子集分割等操作。

(8)时间序列支持:DataFrame 对时间序列数据有特别的支持,可以轻松地进行时间数据的切片、索引和操作。

(9)丰富的数据访问功能:通过 .loc、.iloc 和 .query() 方法可以灵活地访问和筛选数据。

(10)灵活的数据处理功能:包括数据合并、重塑、透视、分组和聚合等。

(11)数据可视化:DataFrame 本身不是可视化工具,但它可以与 Matplotlib 或 Seaborn 等可视化库结合使用,进行数据可视化。

(12)高效的数据输入输出:可以方便地读取和写入数据,支持多种格式,如 CSV、Excel、SQL 数据库和 HDF5 格式。

(13)描述性统计:提供了一系列方法来计算描述性统计数据,如 .describe()、.mean()、.sum() 等。

(14)灵活的数据对齐和集成:可以轻松地与其他 DataFrame 或 Series 对象进行合并、连接或更新操作。

(15)转换功能:对数据集中的值进行转换,例如使用 .apply() 方法应用自定义函数。

(16)滚动窗口和时间序列分析:支持对数据集滚动窗口统计和时间序列分析。

3.DataFrame 构造方法

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

(1)data:DataFrame 的数据部分,可以是字典、二维数组、Series、DataFrame 或其他可转换为 DataFrame 的对象。如果不提供此参数,则创建一个空的 DataFrame。

(2)index:DataFrame 的行索引,用于标识每行数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。

(3)columns:DataFrame 的列索引,用于标识每列数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。

(4)dtype:指定 DataFrame 的数据类型。可以是 NumPy 的数据类型,例如 np.int64、np.float64 等。如果不提供此参数,则根据数据自动推断数据类型。

(5)copy:是否复制数据。默认False,表示不复制数据。如果设置为 True,则复制输入的数据。

4.使用列表创建

import pandas as pd

data = [['Kalka', 10], ['KK', 12], ['Kali', 13]]

# 创建DataFrame
df = pd.DataFrame(data, columns=['Site', 'Age'])

# 使用astype方法设置每列的数据类型
df['Site'] = df['Site'].astype(str)
df['Age'] = df['Age'].astype(float)

print(df)

5.使用字典创建

import pandas as pd

data = {'Site':['Kalika', 'KK', 'Kali'], 'Age':[10, 12, 13]}

df = pd.DataFrame(data)

print (df)

6.使用 ndarrays 创建

import numpy as np
import pandas as pd

# 创建一个包含网站和年龄的二维ndarray
ndarray_data = np.array([
    ['Kalika', 10],
    ['KK', 12],
    ['Kali', 13]
])


# 使用DataFrame构造函数创建数据帧
df = pd.DataFrame(ndarray_data, columns=['Site', 'Age'])

# 打印数据帧
print(df)

使用 ndarrays 创建,ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n),其中n是数组长度。

7.使用字典(key/value)创建

import pandas as pd

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

df = pd.DataFrame(data)

print (df)

没有对应的部分数据为 NaN。Pandas 可以使用 loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1。

8.通过 .loc[] 索引访问打印数据

import pandas as pd

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}

# 数据载入到 DataFrame 对象
df = pd.DataFrame(data)

# 返回第一行
print(df.loc[0])
# 返回第二行
print(df.loc[1])

9.通过 .loc[] 索引返回多行数据

import pandas as pd

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}

# 数据载入到 DataFrame 对象
df = pd.DataFrame(data)

# 返回第一行和第二行
print(df.loc[[0, 1]])

10.指定索引值

import pandas as pd

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}

df = pd.DataFrame(data, index = ["day1", "day2", "day3"])

print(df)

11.使用 loc 属性返回索引对应

import pandas as pd

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}

df = pd.DataFrame(data, index = ["day1", "day2", "day3"])

# 指定索引
print(df.loc["day2"])

12.注意事项

DataFrame 是一种灵活的数据结构,可以容纳不同数据类型的列。列名和行索引可以是字符串、整数等。DataFrame 可以通过多种方式进行数据选择、过滤、修改和分析。通过对 DataFrame 的操作,可以进行数据清洗、转换、分析和可视化等工作。

相关推荐
MinIO官方账号1 小时前
使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器实现可迭代式数据集
人工智能·pytorch·python
四口鲸鱼爱吃盐1 小时前
Pytorch | 利用IE-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python·深度学习·计算机视觉
四口鲸鱼爱吃盐1 小时前
Pytorch | 利用EMI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python
一棵开花的树,枝芽无限靠近你2 小时前
【PPTist】表格功能
前端·笔记·学习·编辑器·ppt·pptist
yuwinter4 小时前
鸿蒙HarmonyOS学习笔记(8)
笔记·学习
Ricciflows4 小时前
MIT线性代数教材:Linear Algebra and Its Applications
人工智能·学习·线性代数·机器学习·数学建模·矩阵
计科土狗5 小时前
离散数学第二章笔记
学习
美式小田5 小时前
Cadence学习笔记 12 PCB初始化设置
笔记·嵌入式硬件·学习·cadence
席万里5 小时前
【MySQL学习笔记】关于索引
笔记·学习·mysql
深蓝海拓6 小时前
使用sam进行零样本、零学习的分割实践
人工智能·深度学习·学习·目标检测·计算机视觉