数据分析和机器学习库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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

个人博客系列-后端项目-系统角色配置(8)

系统角色配置需要设置的接口 用户可以绑定多个角色,角色对应有多个路由权限。用户绑定角色后,可以访问当前角色下的各个api路由和菜单路由。 用户注册时设置用户角色修改用户角色(同时对应用户可以访问的路由将会同步变更)添加修…

有关AI的随笔(1)

随笔: 今天是周天,是个好日子,结果老师布置的诗还没写,只好去借助AI,结果我发现了几个有趣的问题: 1. AI写的诗是如何来的?通过数据库? 2. 它真的明白是什么意思吗?&…

AutoDL算力云进行yolov5训练流程

目录 第一步 充值第二步 选择我们用到的显卡第三步 将我们的yolov5源代码导入服务器第四步 激活环境第五步 训练第六步 训练完成 提取 第一步 充值 打开我们的算力云官网 然后找到充值入口 最低充值50 第二步 选择我们用到的显卡 一般呢我都用便宜的2080ti 选择2080ti之后 基…

前端学习之用css和html做一个仿淘宝的导航栏

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>仿淘宝界面案例</title><style>/* 最外层盒子 */.container{width: 270px;height: 385px;border: 1px solid rgb(255, 208, 0);bord…

【jvm】ParNew和ParallelOld为什么不能一起使用

java垃圾回收器ParNew和ParallelOld为什么不能一起使用 Java垃圾回收器中的ParNew和ParallelOld不能一起使用的原因在于它们的设计和目标不同&#xff0c;以及它们所属的垃圾回收器系列不同。 设计和目标差异&#xff1a; ParNew 收集器是 Serial 收集器的并行版本&#xff0c…

【计算机网络】物理层

文章目录 第二章 物理层一、 物理层的基本概念1. 物理层接口特性 二、数据通信基础1. 典型的数据通信模型2. 数据通信相关术语3. 设计数据通信系统要考虑的3个问题4. 三种通信方式5. 串行传输&并行传输6. 同步传输&异步传输7. 码元8. 数字通信系统数据传输速率的两种表…

Python入门(六)

参数传递 1.普通传参 通过判断对应位置来传递。 2.关键字传参 用关键字(Keyword&#xff09;的方式来传递参数。在定义函数时&#xff0c;我们给了形参一个符号标记&#xff0c;即参数名。关键字传递是根据参数名来让数据与符号对应上。因此&#xff0c;如果在调用时使用关键…

Vite+Vue3+TS+Vue-Router+Axios+Pinia开发模板

一、模板介绍 VUE3开发全家桶模板&#xff0c;安装了ts,router,axios,pinia并提供了简单示例并提供了它们的官网链接。 对axios进行了简单封装。 二、下载地址 https://github.com/yigedayouzi/ViteTemplateOne 三、快速开始 1、git clone gitgithub.com:yigedayouzi/Vite…

鸿蒙实战开发:【7日天气预报】

先来看一下效果 本项目界面搭建基于ArkUI中TS扩展的声明式开发范式&#xff0c; 数据接口是[和风&#xff08;天气预报&#xff09;]&#xff0c; 使用ArkUI自带的网络请求调用接口。 我想要实现的一个功能是&#xff0c;查询当前城市的实时天气&#xff0c; 目前已实现的功…

IDEA, Pycharm, Goland控制台乱码

IDEA, Pycharm, Goland控制台乱码 问题描述: 控制台出现&#xfffd;&#xfffd;&#xfffd;&#xfffd;等乱码 复现频率: 总是 解决方案: 以IDEA为例 添加 -Dfile.encodingUTF-8位置 idea64.exe.vmoptions 在安装idea的bin目录idea.vmoptions idea客户端 示意图

我的风采——android studio

目录 实现“我的风采”页面要求理论代码生成apk文件 实现“我的风采”页面 要求 要求利用’java框架的边框布局实现“找的风采 ”页而&#xff0c;其中中间为你的生活照&#xff0c;左右和下面为按钮&#xff0c;上面为标签 理论 Java GUI编程是Java程序设计的重要组成部分…

设计模式(十二):中介者模式(行为型模式)

Mediator&#xff0c;中介者模式&#xff1a;用一个中介对象封装一些列的对象交互。属于行为型模式 Facade&#xff0c;外观模式&#xff1a;为子系统中的一组接口提供一致的界面&#xff0c;facade 提供了一高层接口&#xff0c;这个接口使得子系统更容易使用。属于结构型模式…

数据结构的概念大合集06(树和二叉树)

概念大合集06 1、树1.1 树的相关定义1.2 树的基本运算1.3 树的基本术语1.3.1 结点的度&#xff0c;树的度1.3.2 分支结点&#xff0c;叶子节点1.3.3 路径&#xff0c;路径长度1.3.4 孩子结点&#xff0c;双亲结点&#xff0c;兄弟结点1.3.5 结点层次&#xff0c;树的高度1.3.6 …

sentinel中StatisticSlot数据采集的原理

StatisticSlot数据采集的原理 时间窗口 固定窗口 在固定的时间窗口内&#xff0c;可以允许固定数量的请求进入&#xff1b;超过数量就拒绝或者排队&#xff0c;等下一个时间段进入, 如下图 时间窗长度划分为1秒 单个时间窗的请求阈值为3 上述存在一个问题, 假如9:18:04:…

C语言 数组指针 指针数组

指针数组 什么是指针数组&#xff0c;他是一个数组&#xff0c;数组的元素是指针。但是指针也有多种数据类型&#xff0c;有数组指针、函数指针、整形指针、字符串指针。 现在我就使用函数指针来写代码&#xff0c;也就是函数指针数组的应用代码&#xff1a; #include <s…

基于SpringBoot和Vue的课程作业管理系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的课程作业管理系统的设计与实现。 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&am…

权限提升-Windows权限提升篇数据库篇MYSQLMSSQLORACLE自动化项目

知识点 1、Web到Win-数据库提权-MSSQL 2、Web到Win-数据库提权-MYSQL 3、Web到Win-数据库提权-Oracle 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 基础点 0、为什么我们要学习权限提升转移技术&#xff1…

ST表和并查集【2024蓝桥杯0基础】-学习笔记

文章目录 ST表-用于优化RMQ问题状态分析例题分析代码复现 并查集例题分析1代码复现 例题分析2状态分析代码复现 合并并查集的方法启发式合并&#xff1a;按照子树的节点大小按秩合并&#xff1a;按照子树的深度 可撤销并查集带权并查集代码复现 例题分析思路分析 感悟 ST表-用于…

android emulator windows bat启动

android emulator windows bat启动 先上结果 // 模拟器路径 -netspeed full -avd 模拟器名称 C:\Users\name\AppData\Local\Android\Sdk\emulator\emulator.exe -netdelay none -netspeed full -avd Pixel_3a_API_34_extension_level_7_x86_64一般来说 windows 如果不做…

小游戏-扫雷

扫雷大多人都不陌生&#xff0c;是一个益智类的小游戏&#xff0c;那么我们能否用c语言来编写呢&#xff0c; 我们先来分析一下扫雷的运行逻辑&#xff0c; 首先&#xff0c;用户在进来时需要我们给与一个菜单&#xff0c;以供用户选择&#xff0c; 然后我们来完善一下&#…