DataFrame基础知识

本文介绍了DataFrame的基础知识,包括如何初始化空DataFrame,展示数据规模(行数和列数,按列统计数据),详细讲解了DataFrame的拼接合并(pd.merge(), pd.concat(), DataFrame.join())以及按行遍历DataFrame的不同方法(iterrows(), itertuples(), iteritems())。还提到了DataFrame的索引操作,并给出了相关资源链接以深入学习。" 133110505,20039089,计算机视觉实战:图像分类技术解析,"['计算机视觉', '图像处理', '深度学习', 'CNN', '数据挖掘']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化空的DataFrame

import pandas as pd
empty_df = pd.DataFrame(columns=['A','B','C','D'])

创建了四列,每一列的内容都是空的

在这里插入图片描述

展示数据规模

1、行数和列数
df.shape
2、按某一列名统计数据
df.groupby('column_name').count()

在这里插入图片描述

DataFrame数据拼接合并

pd.merge()
a=pd.DataFrame({'a':[1,2,3],'b':[2,3,4]})
b=pd.DataFrame({'a':[11,22,33],'c':[22,33,44]})
c=pd.merge(a,b)
c

在这里插入图片描述

a和b的同名列表被合并,但是都是空说明默认连接形式是内连接,即二者默认把相同列名作为查找的条件,若是查找不到相同的值返回空。

加入连接条件
c=pd.merge(a,b,how='outer',on='a')
c

在这里插入图片描述

pd.concat()
pd.concat(a,b)
# 横向拼接
pd.concat([a,b], axis=1)
# 纵向拼接
pd.concat([a,b], axis=0)

报错:

TypeError: first argument must be an iterable of pandas objects, you passed an object of type "DataFrame"

使用pandas.concat(a,b)进行合并的时候,需要是list的形式

pd.concat([a,b])

在这里插入图片描述
它把a,b两个表完全拼接在一起,默认拼接形式是并集,我们可以通过修改参数来修改拼接模式,以及拼接方向,也可以重述索引。

在这里插入图片描述

在这里插入图片描述

更新权重

d=pd.concat([a,b])
d.index=list(range(0,6))
d

在这里插入图片描述

赋值

通过赋值语句可以使得单列数据的拼接。

e=pd.Series(list('abc'))
a['c']=e
a

在这里插入图片描述

DataFrame.join()
a.join(b)

报错:

ValueError: columns overlap but no suffix specified: Index(['a', 'c'], dtype='object')

在这里插入图片描述

列表不能有重名

按行遍历 DataFrame

在这里插入图片描述

  • iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。
  • itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。
  • iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。
inp = [{'c1':10, 'c2':100}, {'c1':11, 'c2':110}, {'c1':12, 'c2':123}]
df = pd.DataFrame(inp)
df

在这里插入图片描述

1、按行 iterrows()

row[‘name’]

for index, row in df.iterrows():
    print(index, row['c1'], row['c2'])

0 10 100
1 11 110
2 12 123
2、按行 itertuples()

getattr(row, ‘name’)

for row in df.itertuples():
    print(getattr(row, 'c1'), getattr(row, 'c2'))

10 100
11 110
12 123
3、按列 iteritems()

row[index]

for index, row in df.iteritems():
    print(index, row[0], row[1], row[2])

c1 10 11 12
c2 100 110 123

https://blog.youkuaiyun.com/sinat_29675423/article/details/87972498

DataFrame的索引

pandas提供了专门的用于索引DataFrame的方法,如果要是用标签,最好使用loc方法,如果使用下标,最好使用iloc方法:
在这里插入图片描述

基础知识总结
https://www.jianshu.com/p/8024ceef4fe2

<think>我们正在处理用户关于DataFrame基础知识的请求。根据用户的问题,我们需要介绍DataFrame的概念、创建方法以及常用操作。 同时,根据系统指令,我们需要: 1. 行内数学表达式用$...$,独立公式用$$...$$ 2. 使用中文回答 3. 生成相关问题 4. 在引用的段落末尾添加引用标识(注意:我们有两个引用,但用户提供的引用内容是关于DataFrame创建的示例,我们可以参考这些示例来讲解) 用户的问题:我想了解DataFrame基础知识点 请问DataFrame 基础知识 概念 常用操作 Python pandas 回答结构: 1. 介绍DataFrame的概念 2. 如何创建DataFrame(参考用户提供的引用示例) 3. DataFrame的常用操作(索引、选择数据、基本操作等) 注意:用户提供的引用[1]和[2]中有创建DataFrame的示例代码,我们可以参考并解释。 由于用户要求的是基础知识,我们将从概念开始,逐步介绍。</think>### DataFrame基础知识(Python pandas) #### 1. **DataFrame概念** DataFrame是Pandas库中最核心的二维数据结构,类似于Excel表格或SQL数据表。其核心特征包括: - 由行索引(index)和列索引(columns)组成的二维表 - 每列可以是不同的数据类型(整数、浮点数、字符串等) - 提供行/列标签的快速数据访问 - 大小可变(可动态增删行列) 数学表示:DataFrame可视为由$n$个Series组成的集合,其中每个Series共享相同的行索引。 #### 2. **创建DataFrame** **方法1:字典创建(最常用)** ```python import pandas as pd data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Score': [88.5, 92.0, 85.5] } df = pd.DataFrame(data) ``` **方法2:嵌套列表创建** ```python df = pd.DataFrame( [['Alice', 25, 88.5], ['Bob', 30, 92.0], ['Charlie', 35, 85.5]], columns=['Name', 'Age', 'Score'] ) ``` **方法3:指定索引和列名** ```python import numpy as np df = pd.DataFrame( np.random.rand(6).reshape(2,3), index=['row1', 'row2'], columns=['A','B','C'] ) ``` > 参考创建方法:[引用1][^1], [引用2][^2] #### 3. **核心操作** **索引与选择:** ```python # 选择列(返回Series) ages = df['Age'] # 选择多列 subset = df[['Name', 'Score']] # 按行索引选择 row2 = df.loc['row2'] # 按位置选择(第0行) first_row = df.iloc[0] ``` **数据操作:** ```python # 新增列 df['Pass'] = df['Score'] > 85 # 删除列 df.drop('Age', axis=1, inplace=True) # 条件过滤 high_scores = df[df['Score'] > 90] # 排序 df.sort_values('Score', ascending=False) ``` **统计功能:** ```python df.describe() # 数值列统计摘要 df['Score'].mean() # 计算平均值 df.groupby('Age')['Score'].max() # 分组聚合 ``` #### 4. **关键属性** ```python df.shape # 维度 (行数, 列数) df.index # 行索引 df.columns # 列名 df.dtypes # 每列数据类型 df.values # 转换为NumPy数组 ``` #### 5. **数据读写** ```python # 从CSV读取 df = pd.read_csv('data.csv') # 写入CSV df.to_csv('output.csv', index=False) # 支持Excel/SQL/JSON等格式 ``` > **最佳实践提示**: > 处理大型DataFrame时,优先使用向量化操作(如`df['col'] * 2`)而非循环,效率可提升$10^2 \sim 10^3$倍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值