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

相关推荐
云上艺旅6 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得2056 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西7 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ7 小时前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL000757 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆8 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
誉鏐8 小时前
PyTorch复现线性模型
人工智能·pytorch·python
Three~stone8 小时前
MySQL学习集--DDL
数据库·sql·学习
齐尹秦8 小时前
HTML 音频(Audio)学习笔记
学习
瞌睡不来9 小时前
(学习总结32)Linux 基础 IO
linux·学习·io