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 的操作,可以进行数据清洗、转换、分析和可视化等工作。

相关推荐
Drawing stars1 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
崇山峻岭之间1 小时前
Matlab学习记录33
开发语言·学习·matlab
科技林总2 小时前
【系统分析师】3.5 多处理机系统
学习
知乎的哥廷根数学学派3 小时前
基于多模态特征融合和可解释性深度学习的工业压缩机异常分类与预测性维护智能诊断(Python)
网络·人工智能·pytorch·python·深度学习·机器学习·分类
芯思路3 小时前
STM32开发学习笔记之三【按键】
笔记·stm32·学习
charlie1145141914 小时前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
咚咚王者4 小时前
人工智能之核心基础 机器学习 第十二章 半监督学习
人工智能·学习·机器学习
袁气满满~_~5 小时前
Python数据分析学习
开发语言·笔记·python·学习
吨吨不打野6 小时前
CS336——2. PyTorch, resource accounting
人工智能·pytorch·python
pumpkin845146 小时前
Go 学习全景引子:理解设计理念与工程思路
python·学习·golang