数据处理与统计分析篇-day05-Pandas详解

创建DaraFrame对象

概述

  • DataFrame是一个表格型的==结构化==数据结构,它含有一组或多组有序的列(Series),每列可以是不同的值类型(数值、字符串、布尔值等)。

  • DataFrame是Pandas中的最基本的数据结构对象,简称df;可以认为df就是一个二维数据表,这个表有行有列有索引

  • DataFrame是Pandas中最基本的数据结构,Series的许多属性和方法在DataFrame中也一样适用.

创建方式

字典方式创建
# 定义字典, 记录: 数据
my_dict = {'id': [1, 2, 3],'name': ['张三', '李四', '王五'],'age': [23, 21, 25]
}
# 将字典 => DataFrame对象
df1 = pd.DataFrame(my_dict)
print(df1)
print(type(df1))  # <class 'pandas.core.frame.DataFrame'>

列表+元组方式创建
# 定义列表, 记录: 数据
my_list = [(1, '张三', 23),      # 列表内嵌套的(元组或列表)是一行数据(2, '李四', 1),(3, '王五', 25)
]
# 将列表 => DataFrame对象
# columns: 指定列的顺序
# index: 指定索引的值
df3 = pd.DataFrame(data=my_list,columns=['id', 'name', 'age'],index=['x', 'y', 'z']
)
print(df3)
print(type(df3))  # <class 'pandas.core.frame.DataFrame'>

index与columns属性
# 定义字典, 记录: 数据
my_dict = {'id': [1, 2, 3],'name': ['张三', '李四', '王五'],'age': [23, 21, 25]
}
# 将字典 => DataFrame对象
# columns: 指定列的顺序
# index: 指定索引的值
df2 = pd.DataFrame(data=my_dict,columns=['name', 'id', 'age'],index=['x', 'y', 'z']
)
print(df2)
print(type(df2))  # <class 'pandas.core.frame.DataFrame'>

属性

# 读取文件, 获取df对象
df = pd.read_csv('data/scientists.csv')
df
​
print(df.shape)         # 维度(8, 5)
print(df.size)          # 元素个数
print(df.values)        # df对象 => ndarray
print(type(df.values))  # <class 'numpy.ndarray'>
print(df.dtypes)        # 各列元素的类型
print(df.ndim)          # 维度, 2
print(df.index)         # 获取所有的索引列(的值)
print(df.columns)       # 列名

函数

print(len(df))                  # 8, 行数
print(df.head())                # 默认前5行
print(df.head(n=2))             # 前2行
print(df.tail())                # 默认最后5行
print(df.tail(n=2))             # 后2行
​
df.info()                                   # 查看详细信息
print(df.describe())                        # 查看格列的统计信息(默认只查看数值列)
print(df.describe(include='all'))           # 查看格列的统计信息(查看所有列)
print(df.describe(include=['int', 'float']))# 查看整型和浮点型
​
print(df.count())       # 查看各列非空值
print(df.max())         # 查看各列最大值
print(df.min())         # 查看各列最小值
​
# print(df.mean())    # 报错, 只针对2020版conda环境有效(平均)
print(df.Age.mean())

布尔索引

# 过滤出df对象中, Age列大于平均年龄的行
# df[Age列 > Age列的平均值]
print(df.Age.mean())
# df[df.Age > df.Age.mean()]  # df对象的布尔值操作
df.Age[df.Age > df.Age.mean()]  # Series对象的布尔值操作
​
# 过滤出前5行中的, 第1, 3, 4行 => 索引:0, 2, 3
df.head()[[True, False, True, True, False]]     # 传入的是布尔列表

计算

# 场景1: df和数值计算(数值会和df对象的每个元素计算)
df * 2
​
# 场景2: df和df对象计算(优先参考索引)
df + df
​
df[:4]  # 类似切片, 获取前4行
df + df[:4]

索引和列名相关操作

设置和取消索引列

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

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

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

# 在pandas中, 某个函数如果有 inplace参数, 则该函数大概率 是默认返回新的副本, 把该参数设置为true, 则在原始对象中修改
# 1. 演示读完设置索引列
movie = pd.read_csv('data/movie.csv')
movie.head()
​
# 设置 movie_title为索引列(分步)
movie.set_index('movie_title')              # 默认返回新的副本
movie.head()        
​
new_movie = movie.set_index('movie_title')  # 默认返回新的副本
new_movie.head()        
​
movie.set_index('movie_title', inplace=True)  # 在原始对象中修改
movie.head()    # 多次运行会报错 "None of ['movie_title'] are in the columns"
​
# 2. 演示读时设置索引列
movie = pd.read_csv('data/movie.csv', index_col='movie_title')
movie.head()
​
# 3. 重置索引列
movie.reset_index(inplace=True)
movie.head()

修改列名和行名

rename()
df = pd.read_csv('data/movie.csv', index_col='movie_title')
df.head()
​
# 手动设置行名(索引列) 和 列名
idx_name = {'Avatar':'阿凡达', "Pirates of the Caribbean: At World's End":'加勒比'}
col_name = {'color':'颜色', 'director_name':'导演名'}
​
# 通过rename函数, 修改行名和列名
df.rename(index=idx_name, columns=col_name, inplace=True)
df.head()
index和columns属性
df = pd.read_csv('data/movie.csv', index_col='movie_title')
df.head()
​
# 获取所有行名 和 列名
idx_list = df.index.to_list()
col_list = df.columns.to_list()
​
# 修改行名和列名
# 索引列
idx_list[0] = '阿凡达'
idx_list[1] = '加勒比'
# 列名
col_list[0] = '颜色'
col_list[1] = '导演名' 
​
# 把修改后的行名和列名设置为新的索引列 和 列名
df.index = idx_list
df.columns = col_list
​
df.head()

添加列

末尾添加
# df = pd.read_csv('data/movie.csv', index_col='movie_title')
df = pd.read_csv('data/movie.csv')
df.head()
#%%
# 1. 添加列: df对象[列名] = 值
df['has_seen'] = 1
# 总点赞数 = 导演点赞数 + 演员的点赞数
df['daafl'] = df['director_facebook_likes'] + df['actor_1_facebook_likes'] + df['actor_2_facebook_likes']
df.head()
指定位置插入
# 在索引为1的位置, 插入1列, 总利润 = 总收入 - 总预算
# insert()函数在原对象中修改
df.insert(loc=1, column='profix', value=df['gross'] - df['budget'])
df.head()

删除列

# df.drop('has_seen', inplace=True, axis='columns')
​
df.head().drop([0, 1])      # [索引值列表]

进阶-获取指定的数据

导出

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

导入

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

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

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

相关文章

如何使用下拉字段创建WordPress表单(简单方法)

许多网站所有者在收集用户输入时&#xff0c;都会因为表单过长而让用户感到压迫。 下拉列表字段通过提供一个简洁的选项列表&#xff0c;使表单变得更简单。这意味着它们可以提高表单完成率&#xff0c;并改善用户体验。 在本文中&#xff0c;我们将向您展示如何创建带有下拉…

Vue安装及环境配置【图解版】

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words&#xff01; 目录 一.node.js的安装…

平替WordPress/Zendesk,3分钟零代码用HelpLook建立一个企业网站

您是否正寻找一个能同时接入网站、小程序、App的内容管理系统&#xff1f;是否希望无需后端技能也能轻松接入&#xff0c;且无需搭建服务器&#xff1f;尤其是有出海需求的企业&#xff0c;希望搭建一个国内外访问速度都快而稳定的在线帮助中心&#xff1f; 企业对于在线内容管…

YOLOv9改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失

一、本文介绍 本文记录的是利用Haar小波下采样对YOLOv9网络进行改进的方法研究。传统的卷积神经网络中常用的最大池化、平均池化和步长为2的卷积等操作进行下采样可能会导致信息丢失&#xff0c;为了解决信息丢失问题&#xff0c;HWD作者受无损信息变换方法的启发&#xff0c;…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。并查集支持两种操作&#xff1a; 合并&#xff08;Union&#xff09;&#xff1a;合并两个元素所属集合&#xff08;合…

nonlocal本质讲解(前篇)——从滤波到Nonlocal均值滤波

线性滤波 → \rightarrow →高斯滤波 → \rightarrow →高斯滤波 → \rightarrow →双边滤波 → \rightarrow →Nonlocal均值滤波 平均 高斯 双边 Nonlocal 目录 线性滤波高斯滤波双边滤波Nonlocal均值滤波 滤波最初是频域的概念&#xff0c;由于频域乘积对应空域卷积&am…

PDF里怎么直接编辑文字?简单操作指南

PDF作为一种广泛使用的文档格式&#xff0c;因其稳定性和跨平台兼容性而受到欢迎。然而&#xff0c;PDF原生的编辑功能相对有限&#xff0c;尤其是直接编辑其中的文字。但幸运的是&#xff0c;随着技术的发展&#xff0c;我们现在有几种方法可以在PDF中直接编辑文字。在本文中&…

二百六十四、Java——Java采集Kafka主题A的JSON数据,解析成一条条数据,然后写入Kafka主题B中

一、目的 由于Hive是单机环境&#xff0c;因此庞大的原始JSON数据在Hive中解析的话就太慢了&#xff0c;必须放在Hive之前解析成一个个字段、一条条CSV数据 二、IDEA创建SpringBoot项目 三、项目中各个文件 3.1 pom.xml <?xml version"1.0" encoding"UTF…

Java设计模式—面向对象设计原则(三) -----> 依赖倒转原则DIP(完整详解,附有代码+案例)

文章目录 3.3 依赖倒转原则(DIP)3.3.1概述3.3.2 案例 3.3 依赖倒转原则(DIP) 依赖倒转原则&#xff1a;Dependency Inversion Principle&#xff0c;DIP 3.3.1概述 高层模块不应该依赖低层模块&#xff0c;两者都应该依赖其抽象&#xff1b;抽象不应该依赖细节&#xff0c;细…

PXE服务

一.PXE服务的功能介绍 1.无盘启动&#xff1a;PXE允许计算机在没有本地存储设备的情况下启动操作系统。这对于构建无盘工作站非常有用&#xff0c;因为计算机可以直接从网络加载操作系统和其他应用程序1。 2.远程安装操作系统&#xff1a;PXE技术可以用于远程安装操作系统&…

HTML讲解(二)head部分

目录 1. 2.的使用 2.1 charset 2.2 name 2.2.1 describe关键字 2.2.2 keywords关键字 2.2.3 author关键字 2.2.4 http-equiv 小心&#xff01;VS2022不可直接接触&#xff0c;否则&#xff01;没这个必要&#xff0c;方源面色淡然一把抓住&#xff01;顷刻炼化&#x…

VSCode C++(Code Runner)+ OpenSSL开发环境搭建

本章教程,主要介绍在VSCode中配置OpenSSL环境。 操作系统:wsl+ubuntu22.04 一、安装必备组件 1、安装g++ sudo apt install g++ 2、安装 OpenSSL sudo apt-get install libssl-dev 3、安装Code Runner插件 这个在vscode的插件市场可以找到,极力推荐使用,安装插件,可以…

nodejs 007:错误npm error Error: EPERM: operation not permitted, symlink

完整错误信息 npm error Error: EPERM: operation not permitted, symlink npm warn cleanup Failed to remove some directories [ npm warn cleanup [ npm warn cleanup C:\\Users\\kingchuxing\\Documents\\IPFS\\orbit-db-set-master\\node_modules\\ipfs-cli, npm…

如何在 Ubuntu 系统上部署 Laravel 项目 ?

到目前为止&#xff0c;Laravel 是 PHP 开发人员构建 api 和 web 应用程序的首选。如果你是新手的话&#xff0c;将 Laravel 应用程序部署到线上服务器上可能有点棘手。 在本指南中&#xff0c;我们将向您展示在 Ubuntu 系统中部署 Laravel 应用程序的全过程。 Step 1: Updat…

c++中的二叉搜索树

目录 ​编辑 一概念&#xff1a; 二性能分析&#xff1a; 三实现步骤&#xff1a; 31插入&#xff1a; 32删除&#xff1a; 33查找&#xff1a; 四应用&#xff08;key与key_value): 41key模型&#xff1a; 42key_value模型&#xff1a; 一概念&#xff1a; 静图展示…

Linux(6)--CentOS目录

文章目录 1. 根目录2. cd目录切换命令3. CentOS目录介绍4. pwd命令介绍5. ls命令介绍5.1 ls5.2 ls -a5.3 ls -l 1. 根目录 Windows电脑的根目录是计算机(我的电脑)&#xff0c;然后C盘、D盘。 Linux系统的根目录是/&#xff0c;我们可以使用cd /进入根目录&#xff0c;然后使…

20240919 - 【PYTHON】辞职信

import tkinter as tk # 导入 tkinter 模块&#xff0c;并简写为 tk from tkinter import messagebox # 从 tkinter 导入 messagebox 子模块&#xff0c;用于显示消息框 from random import random # 从 random 模块导入 random 函数&#xff0c;用于生成随机数# 创建窗口对…

一本还没发布的书,能在Github上拿25.6k⭐️,熬夜也要读完的书

重磅&#xff01;从零构建大语言模型教程开源&#xff01; 自从ChatGPT发布以来&#xff0c;大型语言模型&#xff08;LLM&#xff09;大放异彩。 如今市面上关于大模型的书籍和教程可谓琳琅满目&#xff0c;但基本上都只是从原理和参数调优上讲解的&#xff0c;没有一本系统性…

借老系统重构我准备写个OpenAPI3.1版的API管理工具(附录屏演示)

前段时间一直在忙公司老系统重构的方案设计&#xff0c;其中最大的重构点就是前后端分离。为了加快前后端协同开发和对接的工作效率&#xff0c;我决定写一个公司内部使用的OpenAPI3.1版的API管理工具。 文章目录 有现成的工具为啥不用现有成熟方案初步成果展示录屏演示下一步计…

手语识别系统源码分享

手语识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …