当前位置: 首页 > news >正文

DataFrame数据的常用方法

DataFramepandas 库中最为常用的数据结构之一,它是一个二维的、表格型的数据结构,类似于电子表格或者 SQL 中的表。下面我将从多个方面详细介绍 DataFrame 数据形式。

1. 基本概念

DataFrame 由行和列组成,每一列可以是不同的数据类型(如整数、浮点数、字符串等)。它既有行索引(index),又有列索引(columns),可以看作是多个 Series 对象的集合,每个 Series 对应 DataFrame 中的一列。

2. 创建 DataFrame

2.1 从字典创建

可以使用包含列表的字典来创建 DataFrame,字典的键将成为列名,列表中的元素将成为对应列的数据。(注意是按列插入的)

import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
  • 以下3个创建方法中,df的值都是一样的

2.2 从列表的列表创建

可以使用嵌套列表创建 DataFrame,同时可以指定列名。

data = [['Alice', 25, 'New York'], ['Bob', 30, 'Los Angeles'], ['Charlie', 35, 'Chicago']]
columns = ['Name', 'Age', 'City']
df = pd.DataFrame(data, columns=columns)
print(df)
  • 其中data是3行3列的矩阵,columns是1行3列的矩阵。
  • df是DataFrame格式,其中数据有3行3列,每一列都有列标。
2.3 从 Series 创建

可以将多个 Series 组合成一个 DataFrame

name = pd.Series(['Alice', 'Bob', 'Charlie'])
age = pd.Series([25, 30, 35])
city = pd.Series(['New York', 'Los Angeles', 'Chicago'])
df = pd.DataFrame({'Name': name, 'Age': age, 'City': city})
print(df)

3. DataFrame 的属性

3.1 index

行索引,可以是整数、字符串等,用于标识每一行。

print(df.index)

  • 意思为df的行下标是从0开始到3结束,每个下标间隔为1
3.2 columns

列索引,用于标识每一列。

print(df.columns)

  • 意思为df的列下标有3个,分别是"name,age,city",下标数据类型为object
3.3 shape

返回一个元组,包含 DataFrame 的行数和列数。

rows, columns = df.shape
print(f'行数: {rows}, 列数: {columns}')

  • df为3行3列

4. 数据访问

4.1 按列访问

可以使用列名访问单列或多列数据。

# 访问单列
print("访问列名为name的所有数据")
print(df['name'])
# 访问多列
print("访问列名为name和age的所有数据")
print(df[['name', 'age']])

4.2 按行索引访问

可以使用 lociloc 方法按索引访问数据。

#使用loc方法按行名列名访问数据
print(df.loc[:,"name"])#打印为列名为name的列
# 使用 iloc 按行整数索引访问
print(df.iloc[0])#打印0第行

4.3 按行和列同时访问

可以使用 iloc 方法同时指定行和列进行访问。

# 使用 iloc 按行整数索引和列整数索引访问
print(df.iloc[0, 0])#打印第0行第0列的数据

5. 数据操作

5.1 数据筛选

可以根据条件筛选数据。

# 筛选 Age 大于 28 的行
filtered_df = df[df['age'] > 28]
print(filtered_df)

5.2 数据修改

可以修改 DataFrame 中的数据。

# 修改第 0 行 'age' 列的值
df.loc[0, 'age'] = 26
print(df)

5.3 数据删除

可以删除行或列。

# 删除 'city' 列
df = df.drop('city', axis=1)
print(df)

  • axis=0,表示按行方向进行,也就是删除行(默认为axis=0)
  • axis=1,表示按列方向进行,也就是删除列

6. 数据处理

6.1 缺失值处理

可以处理 DataFrame 中的缺失值。

import numpy as np
# 创建包含缺失值的 DataFrame
data = {'Name': ['Alice', 'Bob', np.nan],'Age': [25, np.nan, 35]
}
df = pd.DataFrame(data)
# 删除包含缺失值的行
df = df.dropna()
print(df)
6.2 数据排序

可以按列的值对 DataFrame 进行排序。

# 按 'Age' 列升序排序
sorted_df = df.sort_values(by='Age')
print(sorted_df)

7. 数据保存

可以将 DataFrame 保存为文件,如 CSV、Excel 等。

# 保存为 CSV 文件
df.to_csv('data.csv', index=False)
# 保存为 Excel 文件
df.to_excel('data.xlsx', index=False)

8.总代码

以下是本文设计到的所有代码,大家可以复制下来自己运行

import pandas as pd
# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
# 使用 loc 方法获取列标签为 'name' 的所有行数据
name_column = df.loc[:, 'name']
print(name_column)
print(df.index)
print(df.columns)
rows, columns = df.shape
print(f'行数: {rows}, 列数: {columns}')
# 访问单列
print("访问列名为name的所有行")
print(df['name'])
# 访问多列
print("访问列名为name和age的所有行")
print(df[['name', 'age']])
#使用loc方法按行名列名访问数据
print(df.loc[:,"name"])#打印为列名为name的列
# 使用 iloc 按行整数索引访问
print(df.iloc[0])#打印0第行
# 使用 iloc 按行整数索引和列整数索引访问
print(df.iloc[0, 0])
# 筛选 Age 大于 28 的行
filtered_df = df[df['age'] > 28]
print(filtered_df)
# 修改第 0 行 'age' 列的值
df.loc[0, 'age'] = 26
print(df)
# 删除 'city' 列
df = df.drop('city', axis=1)
print(df)
# 删除第0行
df = df.drop(0)
print(df)
http://www.dtcms.com/a/289207.html

相关文章:

  • LeetCode 刷题【8. 字符串转换整数 (atoi), 9. 回文数】
  • 国产HMC7044调试记录
  • 【Elasticsearch】合适的锅炒合适的菜:性能与成本平衡原理公式解析
  • 拓展面试题之-rabbitmq面试题
  • MySQL笔记3
  • 试用SAP BTP 02:试用SAP HANA Cloud
  • 【机器学习【9】】评估算法:数据集划分与算法泛化能力评估
  • 图的表示法以及实现
  • 【人工智能99问】长短期记忆网络(LSTM)的结构和原理是什么?(12/99)
  • ROS_INFO_STREAM, 模拟cout流输出机制的ROS输出接口
  • 《棒球知识科普》NBA、MLB选秀状元·棒球1号位
  • Everything介绍
  • 《杜甫传》读书笔记与经典摘要(一)
  • 事务的传播行为,分别在spring和mysql中讲解
  • PyTorch模型Ensemble实现
  • 14.多播与广播
  • Vue3.6 无虚拟DOM模式
  • 基于本机如何建立一个vue项目
  • Linux主机 ->多机器登录
  • Openlayers 面试题及答案180道(121-140)
  • Chapter 3 Design of Switching Power Regulators
  • 两个数据表的故事:第 1 部分
  • MacBook的ARM架构(M芯片)操作虚拟机的docker拉取镜像问题
  • 深入浅出理解动态规划
  • 【Lua】大G表
  • C++STL之stack和queue
  • C++string类简介
  • MySQL 配置性能优化实操指南:分版本5.7和8.0适配方案
  • 解锁Phpenv:轻松搭建PHP集成环境指南
  • C++运算符重载