python pandas 1

导入库 import pandas as pd

一、数据结构

1、Series

        格式:pandas.Series(data,index,dtype) :date  一维数组;index = 指定标签,默认为从0开始的数字。

2、DataFrame

        格式:pandas.DataFrame( data, index, columns, dtype, copy):data 二维数组;index 索引(行标签);colunms 列标签。

二、创建结构

1、空对象

series1 = pd.Series()
dataframe1 = pd.DataFrame()

2、数组对象

2.1、标量

series = pd.Series(5)

2.2、列表

series1 = pd.Series(['小明', '小红', '小紫'])
dataframe1 = pd.DataFrame([['小明', '小红', '小紫'], ['小明', '小红', '小紫']])

2.3、字典

        指定对象行标签为  name 和 gender(一维直接将键作为标签,二维将键作为列标签,需手动设置行标签(index),否则默认从0开始)。

series2 = pd.Series(data={"name":"小明","gender":"男"})
dataframe2 = pd.DataFrame({"name":["小明", '小红'],"gender": ["男",'女']},index=['one', 'two'])

 2.4、列表内嵌套字典

        根据index= 设置行标签;根据字典键设置列标签。

dataframe = pd.DataFrame([{'name': "张三", 'age': 18},{'name': "小红", 'gender': "男", 'age': 19}],index=['name', 'gender'])

 2.5、Series 创建 DataFrame

        若标签不一致,数据无法放到对应列

series1 = pd.Series(["小黄", 5, "新诚信", 1, 11111])
series2 = pd.Series(["小绿", 7, "新诚信", 2, 22222])
dataframe = pd.DataFrame([series1, series2], index=['series1', 'series2'])

 series1 = pd.Series(["小黄", 5, "新诚信", 1, 11111], index=["name", "age", "address", "gender", "id"])
series2 = pd.Series(["小绿", 7, "新诚信", 2, 22222], index=["name", "age", "address", "gender", "id"])
dataframe = pd.DataFrame([series1, series2], index=['series1', 'series2'], columns=["name", "age", "address", "gender", "id"])

 三、索引操作

1、列索引

        通过列标签进行操作(Series只有一个标签,等同于DataFrame的行标签,所以列索引操作只有DataFrame 对象)

 1.1、截取数据

        格式:对象名称[列名称]   (列名称只能填写一个)

dataframe = pd.DataFrame({"name": ["小明", '小红'], "gender":  ["男", '女']},index=['one',  'two'])
print(dataframe['name'])
print(dataframe['gender'])

1.2、添加(修改)列

        格式:对象名称[列名称]=数据(一般使用列表直接添加,元素个数要与行一致);若数据是标量,等同于每行都接收同一个值。

       若列名称已存在于列标签中,则修改其标签内容,列名称不存在,添加一列数据,列标签为该列名称 (与字典新增修改一致)

dataframe['age'] = 15

dataframe['age'] = [15, 18]

1.3、删除列

        格式:对象名称.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise'):labels 单个标签或由多个标签组成的列表;axis =1(axis = columns) 删除列;columns  与labels功能一致,指定删除的列标签;inplace 默认为False,返回新的对象,若为True,直接在原对象进行删除。

dataframe.drop(labels=['age'], axis=1, inplace=True)

2、行索引

2.1、截取数据

2.1.1、loc

        只能使用标签索引,不能使用为位置数索引;此方法的切片方式前后端闭合。

        如果选择单行或单列,返回的数据类型为Series;选择多行或多列,返回的数据类型为DataFrame;选择单个元素(某行某列对应的值),返回的数据类型为该元素的原始数据类型(如整数、浮点数等)。

        格式:对象名称.loc[indexer]、对象名称.loc[row_indexer, column_indexer]、对象名称.loc[indexer1: indexer2]

series = pd.Series(data={"name": "小明", "gender": "男"})
dataframe = pd.DataFrame({"name": ["小明", '小红', '小绿'], "gender": ["男", '女', '女'],
                          'age': [15, 17, 16]}, index=['one', 'two', 'three'])
dataframe['age'] = [15, 17, 16]
print(series.loc['name'])  # 标签为 name 的数据
print(series.loc['name':'gender'])  # 标签为 name 到 gender 之间的数据(前后闭合)
print(dataframe.loc['one'])  # 行标签为 one 的数据
print(dataframe.loc['one':'three'])  # 行标签从 one 到three 的所有行
print(dataframe.loc[['one', 'two'], ['name', 'gender']])  # 行从 one 到 two ,列从name 到 gender ;所围矩形的所有数据

2.1.2、iloc

        只能基于位置推算获取数据(对loc的补充,格式并无区别)。

series = pd.Series(data={"name": "小明", "gender": "男"})
dataframe = pd.DataFrame({"name": ["小明", '小红', '小绿'], "gender": ["男", '女', '女'],
                          'age': [15, 17, 16]}, index=['one', 'two', 'three'])
dataframe[0] = [15, 17, 16]
print(series.iloc[0])  # 位置第一的数据
print(series.iloc[0:1])  # 位置从第一到第二的数据
print(dataframe.iloc[0])  # 第一行的数据
print(dataframe.iloc[0:2])  # 第一行到第三行的所有行数据
print(dataframe.iloc[[0, 1], [0, 1]])  # 行从1到2,列从1到2;所围矩形的所有数据

 2.1.3、切片选取

        与iloc类似,series[0]只有一个元素会被提醒;dataframe失去列表嵌套截取数据功能。

series = pd.Series(data={"name": "小明", "gender": "男"})
dataframe = pd.DataFrame({"name": ["小明", '小红', '小绿'], "gender": ["男", '女', '女'],
                          'age': [15, 17, 16]}, index=['one', 'two', 'three'])
dataframe[0] = [15, 17, 16]
print(series[0])  # 位置第一的数据
print(series[0:1])  # 位置从第一到第二的数据
print(dataframe[0])  # 第一行的数据
print(dataframe[0:2])  # 第一行到第三行的所有行数据
 

2.2、添加行

2.2.1、loc

        与列添加一致,通过行标签添加修改

dataframe['age'] = [15, 18]

 2.2.2、concat

2.3、删除行数据

        与列删除数据方法一致。

        格式:对象名称.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise'):labels 单个标签或由多个标签组成的列表;axis =0(axis = index) 删除列;index  与labels功能一致,指定删除的行标签;inplace 默认为False,返回新的对象,若为True,直接在原对象进行删除。

dataframe.drop(labels=['one'], axis=0, inplace=True)

四、对象常用函数

 1、head() 和 tail()

        head :默认首部五行

        tail:默认尾部五行

series = pd.Series(data={"name": "小明", "gender": "男"})
dataframe = pd.DataFrame({"name": ["小明", '小红', '小绿'], "gender": ["男", '女', '女'],
                          'age': [15, 17, 16]}, index=['one', 'two', 'three'])
dataframe.drop(labels=['one'], axis=0, inplace=True)
print(series.head())  # 默认首部五行,参数填写数值
print(dataframe.head())  
print(series.tail())  # 默认尾部五行,参数填写数值
print(dataframe.tail())

2、isnull() 和 nonull()

isnull():如果为值不存在或者缺失,则返回 True

notnull():如果值不存在或者缺失,则返回 False

series = pd.Series(data={"name": "小明", "gender": "男"})
dataframe = pd.DataFrame({"name": ["小明", '小红', '小绿'], "gender": ["男", '女', '女'],
                          'age': [15, 17, 16]}, index=['one', 'two', 'three'])
dataframe.drop(labels=['one'], axis=0, inplace=True)
print(series.isnull())  # 对应元素判断是否为空,为空返回True
print(dataframe.isnull())
print(series.notnull())  # 对应元素判断是否存在,为空返回True
print(dataframe.notnull())

 五、常用函数

函数名称描述说明
count()统计某个非空值的数量
sum()求和
mean()求均值
median()求中位数
var()求样本方差
std()求标准差
min()求最小值
max()求最大值
abs()求绝对值
prod()求所有数值的乘积

series = pd.Series([20, 30, 15, 20])
dataframe = pd.DataFrame([[20, 30, 15, 20], [18, 52, 47, 33]])
print(series.mean(), dataframe.mean())  # 每列的算术平均数
print(series.median(), dataframe.median())  # 每列的中位数
print(series.var(), dataframe.var())  # 每列总体方差
print(series.std(), dataframe.std())  # 每列标准差
print(series.min(), dataframe.min())  # 每列最小值
print(series.max(), dataframe.max())  # 每列最大值
print(series.sum(), dataframe.sum())  # 每列之和
print(series.count(), dataframe.count())  # 每列非零元素的个数
print(series.abs(), dataframe.abs())  # 所有元素的绝对值
print(series.prod(), dataframe.prod())  # 所有数值的乘积

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

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

相关文章

【算法篇】动态规划类(4)——子序列(笔记)

目录 一、Leetcode 题目 1. 最长递增子序列 2. 最长连续递增序列 3. 最长重复子数组 4. 最长公共子序列 5. 不相交的线 6. 最大子序和 7. 判断子序列 8. 不同的子序列 9. 两个字符串的删除操作 10. 编辑距离 11. 回文子串 12. 最长回文子序列 二、动态规划总结 …

ctfshow-web入门-web31

<?php ​ /* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2020-09-04 00:12:34 # Last Modified by: h1xa # Last Modified time: 2020-09-04 00:49:10 # email: h1xactfer.com # link: https://ctfer.com ​ */ ​ error_reporting(0); if(isset($_GET[c])){$c …

Java语言-接口(下)

目录 1. 接口使用实例 1.1 给对象数组排序 1.2 Clonable接口和深拷贝 Cloneable 浅拷贝 深拷贝 1.3 抽象类和接口的区别 2. Object类 2.1 Object类的介绍 2.2 toString() 2.3 equals() 2.4 hashcode() 1. 接口使用实例 1.1 给对象数组排序 现有一个学生类&#…

关于java继承(深入解析父类属性的抽取与构造函数的作用)

目录 前言基础继承作用 理论分析父类属性的抽取构造函数调用父类构造函数会不会创建一个父类的对象&#xff1f;生命周期角度谁的属性用谁的构造函数初始化 示例解析代码代码调试展示构造函数初始化成员变量 总结 前言 在Java中&#xff0c;继承是一项至关重要的特性&#xff0…

详解23种设计模式——第二部分:结构型模式

目录 3 结构型模式 3.1 代理模式 3.2 适配器模式 3.2.1 默认适配器模式 3.2.2 对象适配器模式 3.2.3 类适配器模式 3.2.4 适配器模式总结 3.3 桥梁模式 3.4 装饰模式 3.4 门面模式 3.5 组合模式 3.6 享元模式 3.7 结构型模式总结 接上一篇&#xff1a;详解23种设计…

openrtp 音视频时间戳问题

解决音视频发送的rtp问题 openrtp增加了音频aac的发送&#xff0c;地址 OpenRTP Gitee开源地址 同时使用两个rtp &#xff0c;来发送音频和视频 使用以下音频rtp&#xff0c;是可以发送和接收的&#xff0c;音频端口在视频端口上2 v0 o- 0 0 IN IP4 127.0.0.1 sMy Stream cI…

Windows通过netsh控制安全中心防火墙和网络保护策略

Windows通过netsh控制安全中心防火墙和网络保护策略 1. 工具简介 【1】. Windows安全中心 【2】. netsh工具 netsh(Network Shell) 是一个Windows系统本身提供的功能强大的网络配置命令行工具。 2. 开启/关闭防火墙策略 在设置端口&#xff08;禁用/启用&#xff09;前&am…

使用 CDN 后 Apache 的日志记录客户真实 IP

经常搭建网站服务器的都知道&#xff0c;在给站点使用了 CDN 后 Web 应用的日志记录里就会只记录 CDN 节点 IP 了&#xff0c;这就没法看到真实客户请求 IP&#xff0c;对于日志分析、运维日常维护来说就有点儿麻烦了&#xff0c;今天明月结合在五洛云服务器上搭建的Apache环境…

多ip访问多网站

多IP访问多网站 1.预配操作 [rootlocalhost ~]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# systemctl stop firewalld ----------关闭防火墙 [rootlocalhost ~]# setenforce 0 -------关闭selinux2.安装n…

【论文阅读】ESRGAN

学习资料 论文题目:增强型超分辨率生成对抗网络(ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks)论文地址:[1809.00219] ESRGAN:增强型超分辨率生成对抗网络代码:xinntao / ESRGAN:ECCV18 研讨会 - 增强的 SRGAN。Champion PIRM Challenge 关于感知…

【机器学习】VQ-VAE(Vector Quantized Variational Autoencoder)

VQ-VAE&#xff08;Vector Quantized Variational Autoencoder&#xff09;是一种生成模型&#xff0c;它结合了变分自编码器&#xff08;Variational Autoencoder, VAE&#xff09;和向量量化&#xff08;Vector Quantization&#xff09;技术。VQ-VAE的主要目的在于通过离散潜…

【动态规划】子序列问题(上)

1. 最长递增子序列 300. 最长递增子序列 和子数组不同的是&#xff0c;子数组要求是连续的&#xff0c;子序列只要下标是递增的就可以&#xff0c;这里严格递增的意思是不能有相等的元素&#xff0c;必须一直递增 状态表示&#xff1a;以 i 位置为结尾的所有的子序列中最长递…

Android GPU Inspector分析帧数据快速入门

使用 谷歌官方工具Android GPU Inspector (AGI) 可以对Android 应用进行深入和全面的系统性能分析和帧性能分析 。AGI 是一个非常强大的分析工具&#xff0c;尤其是在需要诊断 GPU 性能问题和优化应用时&#xff0c;可以帮助你精准找到性能瓶颈。本文介绍如何使用该工具对帧数据…

梳理一下spring中,与message相关的知识点

本次梳理的相关知识点包括jms&#xff0c;amqp(rabbitmq)&#xff0c;sping-messaging&#xff0c;spring-integration&#xff0c;springcloud-stream&#xff0c;这些都是与消息message相关的内容&#xff0c;它们有什么区别与联系呢&#xff1f; 相关的要点与相互关系都整理…

物联网消息队列Emqx日志配置及日志追踪以及Centos7上的rc.local开机不执行、git提交的小问题

一、物联网消息队列Emqx日志配置及日志追踪 EMQX支持将日志输出到控制台或者日志文件&#xff0c;或者同时使用两者。使用 Docker 部署 EMQX&#xff0c;默认只能通过 docker logs 命令查看 EMQX 日志。EMQX 的默认日志级别为 warning&#xff0c;默认在单日志文件超过10MB(log…

word压缩大小怎么弄?快来试试这几种压缩word方法!

word压缩大小怎么弄&#xff1f;在处理Word文档时&#xff0c;如果遇到体积过大的情况&#xff0c;无疑会带来一系列麻烦&#xff0c;大型Word文档不仅占据大量存储空间&#xff0c;而且在传输过程中会耗费更多时间&#xff0c;想象一下&#xff0c;当你急需将一份重要的文档发…

Perl打印9x9乘法口诀

本章教程主要介绍如何用Perl打印9x9乘法口诀。 一、程序代码 1、写法① use strict; # 启用严格模式&#xff0c;帮助捕捉变量声明等错误 use warnings; # 启用警告&#xff0c;帮助发现潜在问题# 遍历 1 到 9 的数字 for my $i (1..9) {# 对于每个 $i&#xff0c;遍历 1…

【设计模式系列】观察者模式

一、什么是观察者模式 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了对象之间的一对多依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。这种模式也被称为发布-订阅模式&…

【AscendC算子开发】笔记2 算子高级开发和调试调优

算子调试 Tensor也可以通过特定的printf方法来打印&#xff0c;见上图。 gdb调试见上图。 为什么gdb调试无法成功&#xff0c;因为run.sh里面有两行export&#xff0c;如果直接通过.XX运行的话需要配置一下。 npu域也支持调试&#xff0c;可以使用上述的方法。 内存检测工…

AI自动生成PPT哪个软件好?智能生成PPT不再熬夜做课件

大概这世上&#xff0c;都是职场牛马对“PPT”这三个字母的头痛反应最大吧&#xff01; 是的&#xff0c;就连各个年级段的老师也是很头痛——愁着怎样能在排版整齐的情况下&#xff0c;将必考知识点都呈现在PPT每一张幻灯片页面里...... 近期打听到用人工智能生成ppt课件&am…