尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Pandas --DataFrame基本操作

Pandas --DataFrame基本操作
📅 发布时间:2026/6/20 2:16:08

Pandas --DataFrame基本操作

一.介绍

   DataFrame是pandas中另一个核心数据结构,它是一个二维的、大小可变的、可以存储多种类型数据的表格结构。每一列可以是不同的类型(数值、字符串、布尔值等),并且有行索引和列索引。类似于Excel表格或SQL数据库中的表。它由行和列组成,每一列都是一个Series对象。DataFrame是pandas中最常用的数据结构。  

  DataFrame的核心作用:

    数据存储:可以存储多种类型的数据,并且可以方便地处理缺失数据。
    数据操作:提供了大量的方法来进行数据清洗、转换、筛选、聚合等操作。
    数据对齐:基于行和列的标签进行数据对齐。
    数据集成:可以轻松地从多种数据源(如CSV、Excel、SQL数据库等)加载数据,并导出为多种格式。
    时间序列处理:支持时间序列数据,提供了日期范围生成、频率转换、移动窗口计算等功能。

  DataFrame的使用场景:

    数据清洗和预处理:处理缺失值、重复值、数据类型转换等。
    数据分析和探索:通过分组、聚合、透视表等操作探索数据。
    数据可视化:可以配合Matplotlib、Seaborn等库进行数据可视化。
    机器学习数据准备:准备特征矩阵和目标变量。
    时间序列分析:处理带有时间戳的数据,进行重采样、滑动窗口等操作。
    数据库风格的操作:进行类似SQL的查询、连接、合并等操作。

  

 二.创建 DataFrame对象和属性查看

  2.1 创建 DataFrame

    除了以下方式创建DataFrame,还可以文件读取创建----使用pd.read_csv('filename.csv') 或 df = pd.read_excel('filename.xlsx')

import numpy as np
import pandas as pd"""创建DataFrame的二维数组(行与列)。 包括:利用python字典利用Series利用ndarray数组
"""
#利用python字典创建DataFrame
data={"张三":{"数学":90,"英语":89,"语文":78},"李四":{"数学":82,"英语":95,"语文":86},"王五":{"数学":85,"英语":94,"语文":65}
}
df=pd.DataFrame(data)
print(df)#利用Series(基于字典)创建DataFrame
s1=pd.Series({"数学":90,"英语":89,"语文":78})
s2=pd.Series({"数学":82,"英语":95,"语文":86})
s3=pd.Series({"数学":85,"英语":94,"语文":65})
df=pd.DataFrame({"张三":s1,"李四":s2,"王五":s3})
print(df)#通过numpy二维数组创建DataFrame
#arange(12)是0~11的数,把它改组成3行四列的二维数组
df=pd.DataFrame(np.arange(12).reshape(3,4))
print(df)#上面的创建没有指定行与列的名称,这里创建时指定行与列
ind=['上午',"下午"]
col=["星期一","星期二","星期三","星期四","星期五"]
df=pd.DataFrame(np.arange(10).reshape(2,5),columns=col,index=ind)
print(df)#成绩随机生成60~100,生成三行四列
ind=["数学","物理","化学"]
col=["张三","李四","王五","赵六"]
df=pd.DataFrame(np.random.randint(60,100,(3,4)),columns=col,index=ind)
print(df)

image

  2.2 DataFrame属性

    DataFrame和Series的属于类似,都有index, columns、values、dtypes等

s1=pd.Series({"数学":90,"英语":89,"语文":78})
s2=pd.Series({"数学":82,"英语":95,"语文":86})
s3=pd.Series({"数学":85,"英语":94,"语文":65})
df=pd.DataFrame({"张三":s1,"李四":s2,"王五":s3})
print("\n#获取行对象...")
print(df.index)
print("\n#获取列对象...")
print(df.columns)
print("\n#获取对象值...")
print(df.values)
print("\n#转值,行列互换...")
print(df.T)

image

 三. DataFrame 基本操作

    包括:提取和修改数据,添加数据,删除数据,删除DataFrame本身

  3.1 DataFrame列的提取

#利用Series(基于字典)创建DataFrame
s1=pd.Series({"数学":90,"英语":89,"语文":78})
s2=pd.Series({"数学":82,"英语":95,"语文":86})
s3=pd.Series({"数学":85,"英语":94,"语文":65})
df=pd.DataFrame({"张三":s1,"李四":s2,"王五":s3})#输出列的数据,可以理解【张三】是列名
print(df["张三"])#上面输出等价于隐藏索引dt.iloc[:,0]和显示索引df.loc[:,"张三"]
#输出列的数据,可以理解为下标索引为0的对应列,也就是【张三】列
#df.iloc[:,0]中[:]冒号表示获取所有行
print(df.iloc[:,0])#输出列的数据,可以理解获取带有【张三】列标签对应的行数据,也就是【张三】列
print(df.loc[:,"张三"])#同时提取二列数据,对应用一个list
print(df.loc[:,["张三","李四"]])

image

   3.2  DataFrame列的修改

#修改列数据, 指定张三列,更改对应数据
df.loc[:,"张三"]=[99,99,99]
print(df)#修改列数据,索引下标2,是修改【王五】列的数据
df.iloc[:,2]=[88,88,88]
print(df)#修改列数据,修改索引下标为1,2的二列数据,对应【李四】=60,70,80 和【王五】列=70,80,90
df.iloc[:,1:3]=[[60,70],[70,80],[80,90]]
print(df)

image

  3.3 DataFrame行的提取

#提取数学这一行的数据
print("----------------------------------")
print(df.loc["数学"])
print("")#提取行下标为0的,也就是数学这一行的数据,同等于df.loc["数学"]
print(df.iloc[0])
print("")#提取数学和英语这二行的数据
print(df.loc[["数学","英语"]])
print("")#提取行下标为0和1的,也就是数学和英文这二行的数据,同等于df.loc[["数学","英语"]]
print(df.iloc[:2])
print("")#提取前二行的数据
print(df.head(2))
print("")#提取最后二行的数据
print(df.tail(2))
print("----------------------------------")

image

  3.4   DataFrame行的修改

#修改语文这行的数据,全部为100
df.loc["语文"]=[100,100,100]
print(df)
print("")
#修改行下标为2也就是语文这行的数据,全部为99
df.iloc[2]=[99,99,99]
print(df)
print("")#修改数学和语文这二行的数据
df.loc[["数学","语文"]]=[[100,100,100],[60,60,60]]
print(df)
print("")#修改数学和英语这二行的数据
df.iloc[:2]=[[50,50,50],[40,40,40]]
print(df)
print("")

image

  3.5 增加行数据和列数据

s1=pd.Series({"数学":90,"英语":89,"语文":78})
s2=pd.Series({"数学":82,"英语":95,"语文":86})
s3=pd.Series({"数学":85,"英语":94,"语文":65})
df=pd.DataFrame({"张三":s1,"李四":s2,"王五":s3})#增加一行数据,   相当于df.loc["化学",:]=np.random.randint(60,100,3)所有的列
df.loc["化学"]=np.random.randint(60,100,3)
print(df)
print("")#增加一列数据,添加赵六的成绩,
df["赵六"]=np.random.randint(60,100,4)
print(df)
print("")#使用insert()增加列数据,在第3列显示插入的列数据
df.insert(2,"小明",np.random.randint(60,100,4))
print(df)
print("")

image

 

   3.6 删除行和列的数据  

#利用Series(基于字典)创建DataFrame
s1=pd.Series({"数学":90,"英语":89,"语文":78})
s2=pd.Series({"数学":82,"英语":95,"语文":86})
s3=pd.Series({"数学":85,"英语":94,"语文":65})
df=pd.DataFrame({"张三":s1,"李四":s2,"王五":s3})#使用del删除列数据,只保留了李四和王五
del df["张三"]
print(df)
print("")#axis=1删除列中的数据,axis=0删除行中的数据,下面是删除语文这行的数据
df.drop(labels="语文",axis=0,inplace=True)
print(df)
print("")#删除df本身
del df

image

  

作者:花阴偷移

出处:https://www.cnblogs.com/MrHSR/

本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

相关新闻

  • 2025年11月全国旗杆厂家综合实力排行榜TOP5权威发布
  • 入侵防护技术深度解析:最新漏洞与威胁态势
  • 20232427 2025-2026-1 《网络与系统攻防技术》实验五实验报告

最新新闻

  • 从TTL到485:深入解析差分信号转换电路的设计要点与实战应用
  • 杭州GEO优化公司2026年6月Top5:选型疑问与避坑全解 - GEO优化
  • 2026年最新武汉光谷科技职业技术学校联系方式及招生办电话号码 - 武汉中职最新信息发布
  • 揭秘Mac鼠标滚轮终极优化:让外接鼠标拥有触控板般的丝滑体验
  • MC9RS08KA2内部时钟与定时器深度解析:从原理到低功耗设计实战
  • 2026玉林本地人必选防水补漏检测维修公司靠谱服务商TOP5推荐:房屋渗漏水检测维修/卫生间/厨房/天花板/阳台/外墙渗漏水检测补漏维修-暗管漏水检测专业仪器精准定位漏水点 - 即刻修防水

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号