数据处理与统计分析——05-Pandas中DataFrame的方法、属性、索引等一系列操作

pd.DataFrame()

pandas.DataFrame() 方法是用于创建一个 Pandas DataFrame 的函数。DataFrame 是 Pandas 中的核心数据结构,类似于 Excel 中的二维表格。它由行和列组成,列通常是不同的数据类型。

语法:

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

参数:

  • data: 数据,用于填充 DataFrame 的内容。可以是多种类型,如字典、列表、NumPy 数组、另一个 DataFrame 等。
  • index: 索引(行标签)。如果不指定,默认会自动生成从 0 开始的整数索引。
  • columns: 列标签。可以指定列的名称,如果不指定,将从数据推断。
  • dtype: 每列的数据类型。可选参数,如果不指定,Pandas 会自动推断数据类型。
  • copy: 布尔值,默认为 False。如果设置为 True,数据将被复制,即使提供的数据是 DataFrame。

(1) DataFrame的常用属性和方法

import pandas as pd# 加载数据集, 得到df对象
df = pd.read_csv('data/scientists.csv')print('=============== 常用属性 ===============')
print(df.shape)		# 查看维度, 返回元组类型 -> (行数, 列数), 元素个数代表维度数
print(df.size)		# 查看数据值个数, 行数*列数, NaN值也算
print(df.values)	# 查看数据值, 返回numpy的ndarray类型
print(df.ndim)		# 查看维度数(8, 5)
print(df.dtypes)	# 返回列名和列数据类型
print(df.index)		# 查看索引值, 返回索引值对象
print(df.columns)	# 查看列名, 返回列名对象print('=============== 常用方法 ===============')
print(df.head())		# 查看前5行数据
print(df.tail())		# 查看后5行数据
df.info()           	# 查看各列的基本信息. 包括: 列名, 列元素个数, 列元素类型
print(df.describe())	# 查看df对象中所有数值列的描述统计信息
print(df.describe(exclude=['int', 'float']))	# exclude:不包含指定类型列
print(df.describe(include='all'))	# include:包含指定类型列, all代表所有类型
print(len(df))			# 查看df的行数
print(df.min())			# 查看df各列的最小值
print(df.count())		# 查看df各列的非空值个数
print(df.mean())		# 查看df数值列的平均值

(2) DataFrame对象的布尔索引

# 细节: df对象和Series对象一样, 也是支持布尔操作的. 
# 需求: 过滤出df对象中, Age列大于平均年龄的数据行
df[df.Age > df.Age.mean()]  # df对象的布尔值操作.
df.Age[df.Age > df.Age.mean()]  # Series对象的布尔值操作.# 需求: 过滤出df对象前5行中的 第1, 3, 4行 => 索引是: 0, 2, 3
df.head()[[True, False, True, True, False]]  # 传入的是 布尔列表.

(3) DataFrame对象的计算

# 细节: 和Series对象一样, df计算也是分两种情况: 
# 1. 和数值运算的时候, 数值会和df对象的每个值进行计算.
# 2. 和新的df计算的时候, 会优先参考索引, 对应索引进行计算, 不匹配就返回NAN.# 场景1: df 和 数值计算.
df * 2		# 每个元素, 分别和数值运算# 场景2: df 和 df计算
df + df		# 根据索引进行对应运算df + df[:4]  # 类似于Python的切片, 即: 获取前4行, 索引为: 0 ~ 4 包左不包右, 索引不匹配, 返回NAN

(4) DataFrame-索引操作

Pandas中99%关于DF和Series调整的API, 都会默认在副本上进行修改, 调用修改的方法后, 会把这个副本返回

这类API都有一个共同的参数: inplace, 默认值是False

`如果把inplace的值改为True, 就会直接修改原来的数据, 此时这个方法就没有返回值了

  • 设置和取消索引

    # todo 细节: 在Pandas中, 某个函数如果有 inplace参数, 则该函数 99%的概率是 默认False返回新副本, 设置为True则直接修改原数据
    # 场景一: 数据读取完毕后 设置索引
    # 1. 读取数据, 获取df对象.
    movie = pd.read_csv('./data/movie.csv')
    movie.head()
    #%%
    # 2. 设置 movie_title列为索引列
    new_movie = movie.set_index('movie_title')  # 默认 inplace=False 返回新副本
    new_movie.head()# 3. 查看设置后的内容.
    # movie.set_index('movie_title', inplace=True)  # 在 原df对象上直接修改
    # movie.head()
    #%%
    # 场景2: 读取数据时, 直接设置索引列.
    movie = pd.read_csv('data/movie.csv', index_col='movie_title')
    movie.head()
    #%%
    # 场景3: 重置索引列.
    movie.reset_index(inplace=True)
    

(5) 更改 Series 和 DataFrame 对象

  • 修改行名和列名

    ---------------------------1. renanme()函数实现---------------------------
    # 1. 获取 df对象 并指定索引列
    df = pd.read_csv('data/movie.csv', index_col='movie_title')
    df.head()
    #%%
    # 2. 手动修改 行名(索引列值)和列名
    # 索引列值
    idx_name = {'Avatar': '阿凡达', "Pirates of the Caribbean: At World's End": '加勒比海盗'}
    # 列名
    col_name = {'color': '颜色', 'director_name': '导演名'}# 3. 通过 rename()函数, 修改 行名和列名
    df.rename(index=idx_name, columns=col_name, inplace=True)
    df.head()
    #%%
    # 4. 查看修改后的结果.
    df.head()----------------------2. 读取所有的行名 列名, 修改后重新设置给df对象----------------------
    # 1. 读取数据, 获取 df对象 并设置 索引列
    df = pd.read_csv('data/movie.csv', index_col='movie_title')
    df.head()
    #%%
    # 2. 获取所有的 索引列值 和 列名
    idx_list = df.index.to_list()
    col_list = df.columns.to_list()
    # col_list[0: 5]# 3. 修改 索引列值 和 列名
    # 修改 索引列值
    idx_list[0] = '阿凡达'
    idx_list[1] = '加勒比海盗'# 列名
    col_list[0] = '颜色'
    col_list[1] = '导演名'# 4. 把修改后的 行名 和 列名, 设置为新的: 索引列 和 列名即可.
    df.index = idx_list
    df.columns = col_list# 5. 查看修改后的结果.
    df.head()
    
  • 添加 删除 插入 列

    ----------------------------添加列----------------------------
    # 1. 读取数据, 获取df对象
    # df = pd.read_csv('data/movie.csv', index_col='movie_title')
    df = pd.read_csv('data/movie.csv')
    df.head()
    #%%
    # todo 2. 添加列: df对象[列名] = 值
    # 是否看过这个电影, 0 => 没看过, 1 => 看过
    df['has_seen'] = 1# 添加1列, 表示电影总的 脸书点赞数, 总点赞数 = 导演的脸书点赞数 + 演员的点赞数
    df['director_actor_all_facebook_likes'] = df['director_facebook_likes'] + df['actor_1_facebook_likes'] + df['actor_2_facebook_likes'] + df['actor_3_facebook_likes']
    # 3. 查看添加后的内容.
    df.head()----------------------------插入列----------------------------
    # 1. 在索引为1的地方插入1列, 总利润 = 总收入 - 总预算
    df.insert(loc=1, column='profix', value=df['gross'] - df['budget'])     # insert() 是直接在原对象上修改
    # 2. 查看处理后的结果.
    df.head()----------------------------删除列----------------------------
    # 1. 演示删除列
    # df.drop('has_seen', inplace=True, axis='columns')
    # df.drop('imdb_score', inplace=True, axis='columns')
    # df.head().drop(['Avatar', "Pirates of the Caribbean: At World's End"])
    df.head().drop([0, 1])      # 根据 索引列值 删除该行.(删除列索引值为 0和1 的)
    

(6) 导入 和 导出数据

  • 导入数据

    # todo 细节: 如果使用Excel文件, 记得先装3个包, xlwt, openyxl, xlrd# 1. 读取文件, 获取df对象.
    df = pd.read_csv('data/scientists.csv')
    df
    #%%
    # 2. 演示导出数据到文件中.  
    # 要求: 导出文件到 当前项目下的 output 文件夹下.   
    # 导出的格式: df.to_文件格式()# 前提: output文件夹必须存在.
    df.to_pickle('data/output/scientists.pickle')        # pickle文件 一般用于存储 pandas的 中间结果. 
    df.to_csv('data/output/scientists.csv')              # 细节: 索引列也会导出
    df.to_csv('data/output/scientists_noindex.csv', index=False)   # 细节: 不导出索引列
    df.to_csv('data/output/scientists_noindex.tsv', index=False, sep='\t')   # sep: 分隔符df.to_excel('data/output/scientists.xlsx')
    df.to_excel('data/output/scientists_noindex.xlsx', index=False, sheet_name='ai21')
    print('导出成功!')
    
  • 导入数据

    # 1. 读取文件, 获取df对象
    # df = pd.read_pickle('data/output/scientists.pickle')# df = pd.read_csv('data/output/scientists.csv')
    # df = pd.read_csv('data/output/scientists_noindex.csv')
    # df = pd.read_csv('data/output/scientists_noindex.tsv', sep='\t') # 读取tsv的时候, 指定分隔符# df = pd.read_excel('data/output/scientists.xlsx')# 如果不写表名, 则默认读取第1个表, 如果写了, 则读取指定的表. 可以是一张表, 也可以是多张表.
    # 1张表的情况下, 返回的是: df对象.
    # 多张表的情况下, 返回的是: 字典, 即: 表名做键, 该表的df对象做值.
    # df = pd.read_excel('data/output/scientists_noindex.xlsx', sheet_name=['ai21', 'ai22'])
    # 2. 查看结果
    df          # 字典
    df['ai22']  # df对象
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474053.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【时间之外】IT人求职和创业应知【37】-AIGC私有化

目录 新闻一:2024智媒体50人成都会议暨每经20周年财经媒体峰会召开 新闻二:全球机器学习技术大会在北京召开 新闻三:区块链技术在金融领域的应用取得新突破 不知不觉的坚持了1个月,按照心理学概念,还要坚持2个月&am…

亿咖通科技应邀出席微软汽车行业智享会,分享ECARX AutoGPT全新实践

11月14日,全球出行科技企业亿咖通科技(纳斯达克股票代码:ECX)应邀于广州参加由微软举行的汽车行业智享会,揭晓了亿咖通科技对“AI定义汽车”时代的洞察与技术布局,分享了亿咖通科技汽车垂直领域大模型ECARX…

三维测量与建模笔记 - 点特征提取 - 4.3 Harris特征点

在3D重建应用中,很重要的一个场景是找到两幅图像中的同名特征点,这个过程需要对特征点进行提取和描述。 从上面描述可以看出,如果窗口处于颜色变化不明显或者没有变化的区域,E的值很小或为0;如果窗口处于边缘位置&…

C指针之舞——指针探秘之旅

❤博客主页:折枝寄北-CSDN博客 ❤专栏内容:C语言学习专栏https://blog.csdn.net/2303_80170533/category_12794764.html?spm1001.2014.3001.5482 指针基础学习 在之前的博客文章中,简单总结了指针的基础概念 我们知道了指针的概念&#xf…

[Qt platform plugin问题] Could not load the Qt platform plugin “xcb“

Qt platform plugin 是 Qt 应用程序启动时加载的插件。不同的平台有不同的插件。 常见的插件有:linuxfb Wayland xcb 简单来说就是启动一个GUI程序, 离不开这些插件.选择其中一个就好 出现这个问题要么就是没有插件,要么就是插件依赖的库没有。 要么就是插件选则的…

Skywalking搭建-来自于图灵课堂

Skywalking主要用于链路追踪,日志收集查看,异常日志查看,服务监控弱一些,服务器监控可以使用prometheus 一、搭建服务端,使用startup.bat启动 配置持久化,如果是用mysql持久化,拷贝mysql链接包…

Relaxcert SSL证书申请与自动续签之IIS

Relaxcert SSL证书申请与自动续签之IIS 1.下载安装自动续签程序2.配置客户端秘钥3.HTTP站点升级HTTPS4.关于SSL自动续签 Relaxcert SSL证书申请与自动续签工具 控制台地址 https://cert.relaxcert.com 文档地址 https://doc.relaxcert.com 1.下载安装自动续签程序 登录控制台…

spi 回环

///tx 极性0 (sclk信号线空闲时为低电平) /// 相位0 (在sclk信号线第一个跳变沿进行采样) timescale 1ns / 1ps//两个从机 8d01 8d02 module top(input clk ,input rst_n,input [7:0] addr ,input …

IDEA旗舰版编辑器器快速⼊门(笔记)

简介:javaweb开发必备软件之IDEA期间版介绍 DEA编辑器器版本介绍 官⽹网:https://www.jetbrains.com/地址:https://www.jetbrains.com/idea/download/#sectionmac DEA 分社区版(Community) 和 旗舰版(Ultimate),我们做JavaWeb开…

WPF的基础控件详解

WPF的基础控件详解 在WPF学习中 基本控件是最简单也是最基础的东西。也是很初学者容易忽略的 本此笔记教程主要针对WPF中基础控件使用和应用进行手把手教学,如果学习了此笔记对你有帮助记得一键三连哦~~~~ TextBlock 基本用法 长字串处理 LineBreak标籤在指定的地…

MySQL的聚簇索引和二级索引

索引按照物理实现方式,索引可以分为 2 种:聚簇(聚集)和非聚簇(非聚集)索引。也可以把非聚集索引称为二级索引或者辅助索引。 一.聚簇索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方…

2.5D视觉——Aruco码定位检测

目录 1.什么是Aruco标记2.Aruco码解码说明2.1 Original ArUco2.2 预设的二维码字典2.3 大小Aruco二维码叠加 3.函数说明3.1 cv::aruco::detectMarkers3.2 cv::solvePnP 4.代码注解4.1 Landmark图说明4.2 算法源码注解 1.什么是Aruco标记 ArUco标记最初由S.Garrido-Jurado等人在…

能源革命持续发力,华普微隔离器助力储能行业“向绿向新”

能源是工业的粮食,是国民经济的命脉,亦是实现可持续发展的关键之处。在各国“双碳”目标战略的引领下,能源革命正全面席卷而来,而加速培育能源新质生产力,构建清洁低碳、安全高效的新型能源体系,已成为全球…

微信小程序-prettier 格式化

一.安装prettier插件 二.配置开发者工具的设置 配置如下代码在setting.json里: "editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","prettier.documentSelectors": ["**/*.wxml"…

sapiens推理的安装与使用

文章目录 1、安装1.1 克隆代码库1.2 设置 Sapiens-Lite 的代码路径1.3 创建 Conda 环境并安装必要的依赖1.4 下载模型检查点 2、推理 sapiens,是meta发布的以人为中心的视觉大模型,"sapiens"这个词来源于拉丁语,意为“智慧的”或“…

leetcode-44-通配符匹配

题解: 代码: 参考: (1)牛客华为机试HJ71字符串通配符 (2)leetcode-10-正则表达式匹配

Linux守护Pythom脚本运行——Supervisor学习总结

Supervisor能做什么? 在工作中有时会遇到在Linux服务器上编写各种脚本来实现日志的推送、数据的传输、流量的监控等,这些脚本在整个系统运行中也需要和其他服务端应用程序一样持续且稳定运行,为了达到这种目的就需要使用进程守护工具来对正在…

C++ | Leetcode C++题解之第565题数组嵌套

题目&#xff1a; 题解&#xff1a; class Solution { public:int arrayNesting(vector<int> &nums) {int ans 0, n nums.size();for (int i 0; i < n; i) {int cnt 0;while (nums[i] < n) {int num nums[i];nums[i] n;i num;cnt;}ans max(ans, cnt);…

SpringBoot总结

一、Spring\SpringBoot\SpringCloud Spring&#xff1a;Spring是SpringBoot和SpringCloud的基础。Spring是一个广泛使用的企业级 Java 应用程序框架&#xff0c;提供了应用开发的核心功能&#xff0c;如依赖注入、AOP&#xff08;面向切面编程&#xff09; 等&#xff0c;旨在简…

Tailscale 自建 Derp 中转服务器

文章目录 为什么要建立 Derp 中转服务器&#xff1f;安装 Go 环境通过 Go 安装 Derp处理证书文件自签一个域名启动 DerpIPV6 的支持防止 Derp 被白嫖以上的操作命令合集自建 Headscale 添加 Derp参考 为什么要建立 Derp 中转服务器&#xff1f; Tailscale 使用的算法很有趣: 所…