数据分析和机器学习库Pandas的使用

Pandas 库是一个免费、开源的第三方 Python 库,是 Python 数据分析和机器学习的工具之一。Pandas 提供了两种数据结构,分别是 Series(一维数组结构)与 DataFrame(二维数组结构),极大地增强的了 Pandas 的数据分析能力。

import pandas as pd
import numpy as np

Series

  • Series是一种类似于一维数组的对象,由下面两个部分组成:
    • Values:一组数据(ndarray类型)
    • index:相关的数据索引标签
  • Series的创建
    • 由列表或numpy数组创建
    • 由字典创建

s1 = pd.Series([1,2,3,4,5])
s1
在这里插入图片描述

s1 = pd.Series([1,2,‘three’,4,5.1])
s1
#Series只可以存储相同类型的元素
在这里插入图片描述

#使用一维数组作为Series的数据源
s2 = pd.Series(np.random.randint(0,10,size=(4,)))
s2
在这里插入图片描述

#使用字典作为Series的数据源
dic = {
‘name’:‘bobo’,
‘age’:20,
‘salary’:1000
}
s3 = pd.Series(dic)
s3
#字典做Series的数据源,字典的key充当的是Series的索引,字典的value值充当的是Series的value值
在这里插入图片描述

  • Series的索引
    • 隐式索引:默认形式的索引(0,1,2…)
    • 显式索引:自定义的索引,可以通过index参数设置显式索引

s4 = pd.Series([99,100,120],index=[‘语文’,‘数学’,‘英语’])
s4
在这里插入图片描述

显式索引的作用:增加了数据的可读性

  • Series的索引和切片:和列表一致

s = pd.Series([99,100,120,100],index=[‘语文’,‘数学’,‘英语’,‘理综’])
s
#显式索引不会覆盖隐式索引
在这里插入图片描述

#索引操作
s[0],s[‘语文’],s.语文
在这里插入图片描述

s[[0,1]],s[[‘语文’,‘理综’]]
在这里插入图片描述

#切片
s[0:3],s[‘语文’:‘理综’]
在这里插入图片描述

  • Series的常用属性
    • shape
    • size
    • index
    • values

s.shape#返回形状
s.size#返回Series元素的个数
s.index#返回索引
s.values#返回value值
在这里插入图片描述

  • Series的常用方法(重要)
    • head(),tail()
    • unique(),nunuque(),values_counts()
    • isnull(),notnull()
    • add(),sub(),mul(),div()

s1 = pd.Series(np.random.randint(0,10,size=(5,)),index=[‘a’,‘b’,‘c’,‘d’,‘e’])
s2 = pd.Series(np.random.randint(0,10,size=(5,)),index=[‘a’,‘b’,‘c’,‘f’,‘e’])

s1
在这里插入图片描述

s2
在这里插入图片描述

s = s1 + s2 #s1.add(s2)
s #Series的运算法则:只有索引一致的元素可以进行算术运算,否则就补空NaN
在这里插入图片描述

s.head(3) #只显示前3个元素
在这里插入图片描述

s.tail(2) #只显示后2个元素
在这里插入图片描述

#nuique():对Series的元素进行去重
s.unique()
在这里插入图片描述

#nunique():可以统计去重后非空元素的个数
s.nunique()
4
#value_counts():可以统计Series中非空元素出现的次数
s.value_counts()
在这里插入图片描述

#isnull():可以对Series中存储的每一个元素进行空值判定,如果为空则返回True,否则返回False
s.isnull()
在这里插入图片描述

#notnull():可以对Series中存储的每一个元素进行非空判定,如果为非空则返回True,否则返回False
s.notnull()
在这里插入图片描述

#可以使用布尔值作为Series的索引进行取值:可以将True对应位置的元素取出,False对应的元素忽略
s[[True,True,True,False,True,False]]
#对Series中的空值进行了过滤
在这里插入图片描述

s[s.notnull()] #实现了空值的过滤
在这里插入图片描述

DataFrame(重点)

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

    • 行索引:index
    • 列索引:columns
    • 值:values
  • DataFrame的创建

    • ndarray创建
    • 字典创建

df1 = pd.DataFrame(data=np.random.randint(0,10,size=(5,6)))
df1
在这里插入图片描述

dic = {
‘name’:[‘bobo’,‘tom’,‘jerry’],
‘age’:[19,20,21]
}
df2 = pd.DataFrame(data=dic)
df2 #字典的key作为df的列索引
在这里插入图片描述

#可以指定df的显示行列索引
df3 = pd.DataFrame(data=np.random.randint(0,10,size=(2,3)),columns=[‘a’,‘b’,‘c’],index=[‘甲’,‘乙’])
df3
在这里插入图片描述

  • 问题:DataFrame中是否可以存储不同类型的元素?
    • 可以的
  • DataFrame的属性
    • values、columns、index、shape

df3.values #df的value值
df3.columns #返回列索引
df3.index #返回行索引
df3.shape #返回形状
(2,3)
#info():查看df表格的基本信息
df3.info()
在这里插入图片描述

  • DataFrame索引操作(重点)
    • 对列进行索引
    • 对行进行索引
    • 对元素进行索引

df = pd.DataFrame(data=np.random.randint(0,100,size=(5,6)),index=[‘a’,‘b’,‘c’,‘d’,‘e’])
df
在这里插入图片描述

#索引取单列
df[0]
在这里插入图片描述

#索引取多列
df[[0,3]]
在这里插入图片描述

#索引取单行
df.loc[‘a’] #loc后面务必要使用显式索引
在这里插入图片描述

df.iloc[0] #iloc后面务必使用隐式索引
在这里插入图片描述

#索引取多行
df.loc[[‘a’,‘e’]]
在这里插入图片描述

#索引取元素
df.iloc[0,1]
67
df.loc[‘a’,0]
7

  • DataFrame的切片操作(重点)
    • 对行进行切片
    • 对列进行切片

#切行
df[0:3]
在这里插入图片描述

#切列
df.iloc[:,0:3]
在这里插入图片描述

  • 时间数据类型的转换
    • pd.to_datetime(col)

dic = {
‘name’:[‘zhangsan’,‘lisi’,‘wangwu’],
‘hire_date’:[“2022-01-10”,“2021-11-11”,“2022-09-09”],
‘salary’:[1000,2000,3000]
}
df = pd.DataFrame(dic)
df
在这里插入图片描述

df.info()
在这里插入图片描述

df[‘hire_date’] = pd.to_datetime(df[‘hire_date’])

df.info()
在这里插入图片描述

#提取时间类型数据中的年,月,日,周
df[‘hire_date’].dt.year #提取年份
df[‘hire_date’].dt.month #提取月份
df[‘hire_date’].dt.day #提取天
df[‘hire_date’].dt.week #提取周
在这里插入图片描述

  • 将某一列设置为行索引
    • df.set_index()

df.set_index(‘hire_date’)
在这里插入图片描述

  • reset_index():可以将Series转换成一个df

s = pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])
s
在这里插入图片描述

s.reset_index()
在这里插入图片描述

  • 将df中的数据存储到外部文件中

df.to_csv(‘./df.csv’)

  • 可以将外部文件的数据加载到df

data = pd.read_csv(‘df.csv’)
data
在这里插入图片描述

#删除指定的行or列
data.drop(columns=‘Unnamed: 0’,inplace=True) #删除列

#删除行
data.drop(index=0,inplace=True)

data
在这里插入图片描述

  • 如何将MySQL和pandas进行关联
    • 工具:pymysql(可以使用python程序远程连接指定的数据库)
    • 安装工具:pip install pymysql

import pymysql
#1.使用pymysql连接数据库
conn = pymysql.Connect(
host = “127.0.0.1”, #数据库服务器的ip地址
port = 3306, #mysql端口号
user = ‘root’,#用户名
password = ‘自己设置的MySQL密码’,
db = ‘testdb’
)

#2.将数据库库表中的数据读取加载到df
sql = ‘select job,ename from emp where sal > 1000’
df = pd.read_sql(sql,conn)
df
在这里插入图片描述
源文件可在这里下载:
https://download.csdn.net/download/ak2111/89023256?spm=1001.2014.3001.5501

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

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

相关文章

Web API —— DOM 学习(四)(完结)

目录 一、日期对象 (一)实例化 (二)日期对象方法 1.时间戳介绍 2.获得时间戳的方式 getTime()方法 new Date()方法 Date.now()方法 二、节点操作 (一)DOM 节点 1.节点类型 元素节点 &#xff08…

1+x中级题目练习复盘(20220625 1+X 中级理论考试)

Override 用于标注重写方法 函数式接口是指有且只有一个抽象方法的接口;

vue项目使用eletron将打包成桌面应用(.exe)

vue项目使用eletron将打包成桌面应用(.exe) 1.前期准备 两个项目: 1、自己用vue cli创建的项目 2、第二个是去gitee将案例clone下来 案例地址 https://gitee.com/qingplus/electron-quick-start.git 2、测试案例是否可以正常运行 # 进入项目 cd electron-quick-…

任务管理工具Trello体验如何?一文揭秘

Trello是一款高效的协作与工作管理应用,这里我们将详细介绍Trello的功能、特点、优劣势、价格、定价、发展历程、使用场景以及使用技巧等等。 一、Trello 是什么 Trello是一款高效的协作与工作管理应用,设计用于跟踪团队项目、凸显当前活动任务、指派责…

POJ3037 + HDU-6714

两道最短路好题 POJ3037 手玩一下 发现每一点的速度可以直接搞出来&#xff0c;就是pow(2,h[1][1]-h[i][j])*V 那么从这个点出发到达别的点的耗费的时间都是上面这个数的倒数&#xff0c;然后直接跑最短路就好了 #include<iostream> #include<vector> #include<…

赛氪网积极参与千校万企协同创新行动,推动产学研深度融合

3月17日&#xff0c;中国千校万企协同创新推进会在北京盛大召开&#xff0c;会议旨在实现高校与行业龙头企业技术升级需求的精准对接&#xff0c;加速新质生产力的形成与发展。教育部党组成员、副部长孙尧&#xff0c;科技部成果转化司副司长秦浩源&#xff0c;国家知识产权局知…

王者荣耀国服米莱迪 - 出装打法详细教学视频(最新)

01. 恰到好处的一技能 02. 灵魂二技能 03. 无敌大招连招 04. 为所欲为的出装 05. 拥有这个召唤师技能赢一半 06. 英雄克制 07. 整局精讲 08. 米莱迪最强出装 09. 米莱迪最强出装的铭文 发送内容: "米莱迪", 获取提取码

【Java程序设计】【C00383】基于(JavaWeb)Springboot的水产养殖系统(有论文)

【C00383】基于&#xff08;JavaWeb&#xff09;Springboot的水产养殖系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c…

阿里云ECS选型推荐配置

本文介绍构建Kubernetes集群时该如何选择ECS类型以及选型的注意事项。 集群规格规划 目前在创建Kubernetes集群时&#xff0c;存在着使用很多小规格ECS的现象&#xff0c;这样做有以下弊端&#xff1a; 网络问题&#xff1a;小规格Worker ECS的网络资源受限。 容量问题&…

推荐多样性 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略: 各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表…

BRICK POP展示了有趣的链上游戏玩法与奖励机制

新游戏BRICK POP将Sui区块链技术与低Gas费用&#xff0c;以及其在Web3游戏开发方面的专业知识无缝结合。通过充分利用Sui和ONBUFF的INNO平台优势&#xff0c;BRICK POP为玩家提供了一个融合了前沿技术和引人入胜游戏的沉浸式游戏体验。BRICK POP游戏设计为实时交易和高用户参与…

大数据开发(日志离线分析项目)

大数据开发&#xff08;日志离线分析项目&#xff09; 一、项目需求1、使用jqueryecharts的方式调用程序后台提供的rest api接口&#xff0c;获取json数据&#xff0c;然后通过jquerycss的方式进行数据展示。工作流程如下&#xff1a;2、七大角度1、用户基本信息分析模块2、浏览…

【Python】学习率调整策略详解和示例

学习率调整得当将有助于算法快速收敛和获取全局最优&#xff0c;以获得更好的性能。本文对学习率调度器进行示例介绍。 学习率调整的意义基础示例无学习率调整方法学习率调整方法一多因子调度器余弦调度器 结论 学习率调整的意义 首先&#xff0c;学习率的大小很重要。如果它…

java 面向对象入门

类的创建 右键点击对应的包&#xff0c;点击新建选择java类 填写名称一般是名词&#xff0c;要知道大概是什么的名称&#xff0c;首字母一般大写 下面是创建了一个Goods类&#xff0c;里面的成员变量有&#xff1a;1.编号&#xff08;id&#xff09;&#xff0c;2.名称&#x…

Android 性能优化(六):启动优化的详细流程

书接上文&#xff0c;Android 性能优化&#xff08;一&#xff09;&#xff1a;闪退、卡顿、耗电、APK 从用户体验角度有四个性能优化方向&#xff1a; 追求稳定&#xff0c;防止崩溃追求流畅&#xff0c;防止卡顿追求续航&#xff0c;防止耗损追求精简&#xff0c;防止臃肿 …

【IT之家】IT之家网站的资讯文章资源,实时数据抓取检索软件免费下载NO.65

简介&#xff1a;IT之家是业内领先的IT资讯和数码产品类网站。IT之家快速精选泛科技新闻&#xff0c;分享即时的IT业界动态和紧跟潮流的数码产品资讯&#xff0c;提供给力的PC和手机技术文章、丰富的系统应用美化资源&#xff0c;以及享不尽的智能阅读。 本软件基于C#实现的win…

苹果 WWDC 24 将举行;高通、谷歌、英特尔等联合开发 AI 软件;艺术家谈及使用 Sora 创作视频体验

▶ 苹果WWDC 24 将于当地时间 6 月 10 日召开 3 月 27 日凌晨&#xff0c;苹果官宣将于当地时间 6 月 10 日举行今年的全球开发者发布大会。 苹果全球营销高级副总裁 Greg Joswiak 在社交媒体上表示&#xff1a;「在您的日历标记上 WWDC24 吧。这场活动无疑会令人惊喜&#xf…

数字化转型核心:实现业务与技术深度融合的运维数字化管理之道

写在前面 数字化转型已经成为大势所趋&#xff0c;各行各业正朝着数字化方向转型&#xff0c;利用数字化转型方法论和前沿科学技术实现降本、提质、增效&#xff0c;从而提升竞争力。 数字化转型是一项长期工作&#xff0c;包含的要素非常丰富&#xff0c;如数字化转型顶层设…

Spring:面试八股

文章目录 参考Spring模块CoreContainerAOP 参考 JavaGuide Spring模块 CoreContainer Spring框架的核心模块&#xff0c;主要提供IoC依赖注入功能的支持。内含四个子模块&#xff1a; Core&#xff1a;基本的核心工具类。Beans&#xff1a;提供对bean的创建、配置、管理功能…

同城双活:交易链路的稳定性与可靠性探索

知易行难&#xff0c;双活过程中遇到了非常多的问题&#xff0c;但是回过头看很难完美的表述出来&#xff0c;之所以这么久才行文也是这个原因&#xff0c;总是希望可以尽可能的复现当时的思考、问题细节及解决方案&#xff0c;但是写出来才发现能给出的都是多次打磨、摸索之后…