数据分析从入门到精通 2.pandas修真之前戏基础

从爱上自己那天起,人生才真正开始

                                                        —— 24.5.6

为什么学习pandas

        numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢?
        numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!

什么是pandas?

首先先来认识pandas中的两个常用的类
        Series
        DataFrame

Series类

Series是一种类似与一维数组的对象,由下面两个部分组成:

        values:一组数据(ndarray类型)
        index:相关的数据索引标签

Series的创建

        由列表创建

from pandas import Series
# Series的创建
# 由列表创建
s1 = Series(data=[1,2,3,"four"])
print(s1)
print("——————————————————————————————————————")

        由numpy数组创建

# 由numpy数组创建
import numpy as np
s2 = Series(data=np.random.randint(0,100,size=(3)))
print(s2)
print("——————————————————————————————————————")

index参数用来指定显示索引的 默认的0,1,2,3为隐式索引

# index参数用来指定显示索引的 默认的0,1,2,3为隐式索引
s3 = Series(data=[1,2,3,"four"],index=['a','b','c','d'])
print(s3)
print("——————————————————————————————————————")


        由字典创建

        为什么需要有显示索引?

                显示索引可以增强series的可读性

# 由字典创建
dic = {'语文':99,'数学':100,'英语':100
}
s4 = Series(data=dic)
print(s4)
print("——————————————————————————————————————")

Seires的索引和切片

dic = {'语文':99,'数学':100,'英语':100
}
s4 = Series(data=dic)
print(s4)
print("——————————————————————————————————————")# 索引
print(s4[0])
print(s4.语文)
# 切片
print(s4[0:2])

Series的常用属性

        shape:返回数组的形状

        size:返回数组元素的个数

        index:返回数组的索引

        values:返回存储的元素值

# shape:返回数组的形状   ize:返回数组元素的个数   index:返回数组的索引   values:返回存储的元素值
s = Series(data=[1,1,4,"一切都会好的","我一直相信"])
print(f"s.shape={s.shape}")
print(f"s.size={s.size}")
print(f"s.index={s.index}")
print(f"s.values={s.values}")
print(f"s.dtype={s.dtype}")

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

​Series的常用方法

        head(),tail()

# 导包
import numpy as np
from pandas import Series# 创建Series数组对象
s = Series(data=np.random.randint(60,100,size=(10,)))# head() 显示前n个数组元素,n默认为5
print(f"s={s}")
print(f"s.head()={s.head()}") # 显示数组中前n个对象,默认n是5
print("s.head(2)={s.head(2)}")
print("——————————————————————————————————————")# tail() 显示后n个数组元素,n默认为5
print(f"s={s}")
print(f"s.tail()={s.tail()}") # 显示数组中后n个对象,默认n是5
print("s.tail(2)={s.tail(2)}")
print("——————————————————————————————————————")

        unique()

# 导包
import numpy as np
from pandas import Series# 创建Series数组对象
s = Series(data=np.random.randint(60,100,size=(10,)))# unique()去重,去除重复的数据
print(f"s={s}")
print(f"s.unique()={s.unique()}")
print("——————————————————————————————————————")

 

        isnull(),notnull()

# 导包
import numpy as np
from pandas import Series# 创建Series数组对象
s = Series(data=np.random.randint(60,100,size=(10,)))
# isnull 用于判断每个元素是否为空 如果为空返回true,否则返回false
print(f"s.isnull()={s.isnull()}")
print("——————————————————————————————————————")# notnull 用于判断每个元素是否不为空 如果不为空返回true,否则返回false
print(f"s.notnull()={s.notnull()}")
print("——————————————————————————————————————")

        add()加法、 sub()减法、 mul()乘法、 div()除法

Seriese的算术法则

        —— 法则:索引一致的元素进行算术运算否则补空

DataFrame类

DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。
        行索引:index
        列索引:columns
        索引所对的值:values

DataFrame的创建

        ndarray创建

# 导包
from pandas import DataFrame
import numpy as np# DataFrame的创建
# ndarray创建
df1 = DataFrame(data=[[1,2,3],[4,5,6]])
print(df1)df2 = DataFrame(data=np.random.randint(0,100,size=(6,4)))
print(df2)

        字典创建

# DataFrame的创建
# 字典创建
dic = {'name':["张三","李四","王老五"],"salary":[1000,2000,3000]
}df3 = DataFrame(data=dic)
print(df3)

DataFrame的属性

        values: 二维数组存储的数据

        columns:返回列索引

        index:返回行索引

        shape:返回形状(几行几列)

# 导包
from pandas import DataFrame
import numpy as np# DataFrame的创建
# ndarray创建
df = DataFrame(data=np.random.randint(0,100,size=(6,4)))
print(df)
print(df.values)
print(df.index)
print(df.columns)
print(df.shape)
print(df.dtypes)

练习

根据以下考试成绩表,创建一个DataFrame,命名为df:
                张三 李四

        语文 150     0
        数学 150     0
        英语 150     0
        理综 300     0

# 导包
from pandas import DataFrame
import numpy as npdic = {"张三":[150,150,150,300],"李四":[0,0,0,0]
}
df = DataFrame(data=dic,index=["语文","数学","英语","理综"])
print(df)

DataFrame索引操作

        对行进行索引,取列

# 导包
from pandas import DataFrame
import numpy as np# DataFrame索引操作
# 创建数据源
# 行索引是显示的,列索引是隐式的 列索引是显示的:a、b、c、d
df = DataFrame(data=np.random.randint(60,100,size=(8,4)),columns=['a','b','c','d'])print("取单列:")
# 对行进行索引
# 取单列,如果df有显示的索引,通过索引机制取行或者列的时候只能使用显示索引
print(df['a'])
print("——————————————————————————————————————")# 用隐式索引取单列
print("隐式索引取单列")
print(df.iloc[0])
print("——————————————————————————————————————")# 取多列 需要两个中括号
print("取多列:")
print(df[['a','b','c']])
print("——————————————————————————————————————")# 通过隐式索引取列
print("隐式索引取列:")
print(df.iloc[0])
print("——————————————————————————————————————")

        对列进行索引,取行

# 导包
from pandas import DataFrame
import numpy as np# DataFrame索引操作
# 创建数据源
# 行索引是显示的,列索引是隐式的 列索引是显示的:a、b、c、d
df = DataFrame(data=np.random.randint(60,100,size=(8,4)),columns=['a','b','c','d'])# 对列进行索引
# 隐式索引取单行
print("隐式索引取单行:")
print(df.iloc[0])
print("——————————————————————————————————————")# 取多行 需要两个中括号
# 隐式索引取多行
print("隐式索引取多行:")
print(df.iloc[[0,3,5]])
print("——————————————————————————————————————")# 显示索引取单行
print("显式索引取单行:")
print(df.loc[0])# 显示索引取多行
# 由于数组没有显示索引,所以iloc和loc都可以求隐式索引,如果数组中有显示索引,loc后面只能跟显示索引不能跟隐式索引
print("显式索引取多行:")
print(df.iloc[[0,3,5]])
print("——————————————————————————————————————")

      对元素进行索引

# 导包
from pandas import DataFrame
import numpy as np# DataFrame索引操作
# 创建数据源
# 行索引是显示的,列索引是隐式的 列索引是显示的:a、b、c、d
df = DataFrame(data=np.random.randint(60,100,size=(8,4)),columns=['a','b','c','d'])# 对元素进行索引
print("对元素进行索引")
print("取单个元素")
print(df.iloc[0,2])
print(df.loc[0,'a'])
print("——————————————————————————————————————")print("取多个元素")
print(df.iloc[[1, 3, 5], 2])

—— iloc:

        通过隐式索引取行

—— loc:

        通过显示索引取行

总结

df索引和切片操作

        索引:
                df[col]:取列
                df.loc[index]:取行
                df.iloc[index,col]:取元素

        切片:
                df[index1:index3]:切行

                df.iloc[:,col1:col3]:切列

DataFrame的运算

        —— 同Series运算一致

        —— 法则:索引一致的元素进行算术运算否则补空

        add()加法、 sub()减法、 mul()乘法、 div()除法

练习

1.假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
2.假设张三期中考试数学被发现作弊,要记为0分,如何实现?
3.李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
4.后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?

# 导包
from pandas import DataFramedic = {"张三":[150,150,150,150],"李四":[0,0,0,0]
}# 根据字典创建数组
df=DataFrame(data=dic,index=["语文","数学","英语","理综"])# 期中考试
MidTest = df# 期末考试
LastTest = df# 期中+期末的平均值
print((MidTest+LastTest)/2)# 张三期中作弊了,将数学分数改为0
MidTest.loc["数学","张三"] = 0
print(MidTest)# 李四举报张三,将李四所有成绩+100
MidTest["李四"] += 100
print(MidTest)# 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分
MidTest += 10
print(MidTest)

时间数据类型的转换

pd.to_datetime(col)将某一列

# 导包
from pandas import DataFrame
import pandas as pddic = {'time':["2010-10-10","2011-11-20","2020-1-10"],"temp":[33,31,30]
}df = DataFrame(data=dic)
print(df)# 查看time列的类型
print(df["time"].dtype)
print("————————————————————————————————————")
# 将time列的数据类型转换成时间序列类型
df['time'] = pd.to_datetime(df["time"])
print(df)
print(df['time'].dtype)
print("————————————————————————————————————")

设置为行索引

df.set_index(

# 导包
from pandas import DataFrame
import pandas as pddic = {'time':["2010-10-10","2011-11-20","2020-1-10"],"temp":[33,31,30]
}df = DataFrame(data=dic)
print(df)# 将time列作为原数据的行索引,替换10,1,2
df.set_index('time', inplace=True)
print(df)

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

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

相关文章

接口自动化测试之-requests模块详解

一、requests背景 Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。 二、requests安装 利用p…

CI/CD笔记.Gitlab系列.新用户管理

CI/CD笔记.Gitlab系列 新用户管理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_285502…

记一次攻防演练

看到一处登录后台,各种操作都尝试过无果,翻了一下js,看到一处文件上传接口泄露(没图了,已经整改了) 构造上传数据包,很nice,上传成功 直接连接webll,搭建隧道进行内网穿透 翻看配置文件&#xf…

简单说说 gather_plan_statistics

DBA的日常核心工作之一是对线上有性能问题的SQL语句进行优化。其中优化SQL语句的最关键的一步是得到SQL的执行计划。那么一个常见的问题来了。如何得到一个SQL语句的真实执行计划?方法有很多。今天说其中一种方法就是使用 gather_plan_statistics(收集计划统计信息) 首先简单…

东方生物工程设备技术有限责任公司带您解读2024第12届上海生物发酵展览会

参展企业介绍 镇江东方生物工程设备技术有限责任公司是国内规模最大的自动成套生化反应设备的专业制造商,也是江苏省最早的专业发酵罐制造公司。公司主要从事液体发酵设备、固体发酵设备、特殊新型生化反应设备以及自动生化反应过程控制系统的研究、开发与制造。 公…

鸿蒙内核源码分析(事件控制篇) | 任务间多对多的同步方案

官方概述 先看官方对事件的描述. 事件(Event)是一种任务间通信的机制,可用于任务间的同步。 多任务环境下,任务之间往往需要同步操作,一个等待即是一个同步。事件可以提供一对多、多对多的同步操作。 一对多同步模型…

HFP event

0 Preface/Foreword NOTE:在来电提示音在响时候,每3s会进入一次。 也就是说:协议栈,没3s会调用一次app_hfp_event_callback。 回调函数在hfp初始化时候通过btif_hf_register_callback注册。 提示音调节: iPhone6s iO…

区块链开发用的是哪种编程语言?

区块链技术作为近年来备受瞩目的新兴技术之一,其核心的特性之一就是去中心化、安全性高、透明度高和可扩展性强。而区块链的开发语言则是实现这一技术的关键因素之一。那么,区块链开发语言是哪一种编程语言呢? 一、区块链开发语言的特点和选…

OZON卖家必看!2024年OZON运营必备工具大全

OZON运营过程中会用到许多工具网站,都是OZON跨境人运营必备的。为了帮助新卖家在运营OZON时更高效,下面汇总了一份我们在日常运营中频繁使用的工具网站列表。这样大家可以一次性找到所需的所有网址,无需在多个网站间来回切换,节省…

C++:哈希表和unordered系列容器的封装

一、unordered系列关联式容器的介绍 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是&…

K. 子串翻转回文串

给一个串 s  s1s2... sn,你可以选定其一个非空子串,然后将该子串翻转。具体来说,若选定的子串区间为 [l, r](1 ≤ l ≤ r ≤ n),则翻转后该串变为 s1s2... sl - 1srsr - 1... slsr  1... sn…

海外仓管理软件:如果你这么用,它对你有害无益

虽然说海外仓管理系统是个功能强大的工具,但它并不能解决海外仓所有的问题。 那么什么时候适合使用海外仓系统,什么样的使用方式是错误的?今天就系统的和大家聊聊这个问题。 不要把海外仓管理系统当成“救急”工具 很多时候人们在遇到问题的时…

Day_1

1. 环境搭建 技术选型 后端项目结构 sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块 sky-common 子模块,存放公共类,例如:工具类、常量类、异常类等 sky-pojo 子模块,存放实体类、VO、DTO…

node.js对数据库的操作 之 query(查询)与pool(连接池)

一、Query(查询) (1)意义 query是指向数据库发送的一个命令或请求,以检索、更新、插入或删除数据。它是一个具体的SQL语句或NoSQL命令,用于从数据库中获取或修改数据。 (2)用途 …

4个可将 iPhone iPad iPod 修复至正常状态的 iOS 系统恢复软件

许多iOS用户对操作系统问题感到恐慌,例如iPhone卡在恢复模式、白屏死机、黑屏死机、iOS系统损坏、iTunes连接屏幕、iPhone数据丢失等。这些状态通常很无聊,因为您无法使用 iPhone 执行任何操作。 4个可将 iPhone iPad iPod 修复至正常状态的 iOS 系统恢复…

一键自动化博客发布工具,用过的人都说好(segmentfault篇)

segmentfault是我在这些平台中看过界面最为简洁的博客平台了。 今天就以segmentfault为例,讲讲在blog-auto-publishing-tools中的实现原理。 前提条件 前提条件当然是先下载 blog-auto-publishing-tools这个博客自动发布工具,地址如下:https://github…

win中python中OpenCV使用cv2.imshow()报错的解决办法

1. 问题 cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK 2.x or Cocoa support. If you are on Ubuntu o…

leetcode45.跳跃游戏||

问题描述&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返…

KNOWLEDGE DISTILLATION BASED ON TRANSFORMED TEACHER MATCHING

摘要 温度标度作为logit匹配和概率分布匹配的bridge技术&#xff0c;在知识蒸馏&#xff08;KD&#xff09;中起着至关重要的作用。传统上&#xff0c;在蒸馏中&#xff0c;温度标度适用于教师的logits和学生的logits。在本文中&#xff0c;受到最近一些研究成果的启发&#x…

解锁程序员高效编程之谜:软件工具、编辑器与插件的秘密武器大公开!

程序员如何提高编程效率&#xff1f; 程序员提高编程效率是一个多方面的过程&#xff0c;涉及技能提升、工具使用、时间管理以及工作习惯等多个方面。以下是一些建议&#xff0c;帮助程序员提高编程效率&#xff1a; 1. 选择适合的工具 使用高效的代码编辑器或集成开发环境&…