pandas数据分析:pandas基础函数入门教程【w3school学习笔记】

news2025/7/9 1:51:59

系列文章目录

pandas数据分析:十分钟快速入门重点函数速查


文章目录

  • 系列文章目录
  • 前言
  • 一、Pandas作用
  • 二、数据结构
    • 2.1 Series
    • 2.2 DataFrame
  • 三、读取数据
    • 3.1 读取CSV文件数据
    • 3.2 读取JSON文件数据
  • 四、分析数据
  • 五、清洗数据
    • 5.1 空值
      • 5.1.1 删除包含空值的行
      • 5.1.2 填充空值
    • 5.2 错误格式的数据
    • 5.3 错误的数据
      • 5.3.1修改为可能正确的数据
      • 5.3.2 设置正确的数据上下界
      • 5.3.3 删除错误数据所在的行
    • 5.4 重复的数据
      • 5.4.1 查找重复数据
      • 5.4.2 删除重复数据
  • 六、数据相关性
  • 七、数据可视化


前言

在学习pandas的过程中,通过w3school的pandas入门资料,在这里记录一下学过的函数笔记。原网站:Pandas Tutorial
在这里插入图片描述


在学习前,默认:

import pandas as pd

一、Pandas作用

给一些数据,可以实现以下的功能:
1、计算两列或者很多列之间是否存在相关性
2、平均值是多少?最大值,最小值是多少?
3、清理数据:删除不相关的行,删除NULL或空值

二、数据结构

2.1 Series

1、定义:一个一维的数据结构,可以包含不同类型的数据。【类似table中的一列】
2、创建Series:

myvar = pd.Series([1, 7, 2])

3、获取Series的标签:在默认情况下,Series的每一行会存在一个索引,从0开始。通过索引可以获取Series中相应位置的内容。

myvar[2]

4、创建标签:在pd.Series中存在一个参数index,传递一个列表,可以将列表中的内容和Series中的数据匹配,从而列表作为Series作为索引查询数据。

a=[1,2,3]
pd.Series(a, index = ["x", "y", "z"])
#可以通过新建的索引搜索Series
a["y"]

2.2 DataFrame

1、定义:DataFrame是一个二维的数据结构,类似于一个二维数组,或者一个包括了很多行和很多列的表。
2、创建一个DataFrame:将一个字典数据结构转化为DataFrame

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}
df = pd.DataFrame(data)

3、给索引赋值:通过索引可以获取某一行的内容;这里通过pd.DataFrame中的index参数为索引赋值。

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])

4、获取具体某(些)行和某(些)列:loc函数

#获取第一行数据:【pandas从第0行开始】
df.loc[1]#返回一个Series对象
#获取第0行和第1行数据
df.loc[[0, 1]]#通过[]实现的获取数据,返回对象为DataFrame
#可以通过索引名称获取某一行的值
df.loc["day2"]
df.loc[["day2","day3"]]

5、从文件中获取DataFrame

#从csv文件中获取数据
df = pd.read_csv('data.csv')

三、读取数据

3.1 读取CSV文件数据

1、CSV文件:CSV文件可以存储大量数据,通过逗号分割数据。
2、读取文件数据:

df = pd.read_csv('data.csv')

【Note:print(df.to_string())可以获取df的全部行和列;如果print(df)那么,当df的数据量很大时,指挥获取到前五行和最后五行】
通过pd.options.display.max_rows可以获取系统最大显示DataFrame的行数。
例如:
在这里插入图片描述
说明:在本机系统,通过print(df)最大显示的数据为60行;若df的行数在60行以内,则全部显示,若df的行数超过60行,只显示前5行和后5行。

3.2 读取JSON文件数据

读取JSON文件

df = pd.read_json('data.json')

四、分析数据

1、数据概览data view:通过head()获取DataFrame的头部数据,可以看到DataFrame中的前几行数据,从而对数据表有一个了解;通过tail()获取表的后几行的数据,对表有一个了解。

#获取前十行数据
df.head(10)
df.head()#默认获取前五行
#获取后五行数据
df.tail()

2、info()函数:提供数据集的更多信息

df.info()

在这里插入图片描述
通过上方info显示,可以看出df数据表共有169行,4列。并且获取了每列的数据类型。
其中在Calories列中存在5个空值。

五、清洗数据

清洗数据意味着将脏数据从数据集中消除。
脏数据:空值;错误格式的数据;错误的数据;重复数据。
样例数据表如下:
在这里插入图片描述
The data set contains some empty cells (“Date” in row 22, and “Calories” in row 18 and 28).
The data set contains wrong format (“Date” in row 26).
The data set contains wrong data (“Duration” in row 7).
The data set contains duplicates (row 11 and 12).

5.1 空值

空值可能会在数据分析时提供一个错误的结果

5.1.1 删除包含空值的行

一种方法是删除包含空值的行,适用场景是在数据量非常大的时候,空值数目较少的时候。这时候删除空值所在的行不会对结果早场特别大。通过dropna实现

newdf=df.dropna()#dropna()不会修改原始的df
df.dropna(inplace = True)#增加inplace参数,可以修改原始df

5.1.2 填充空值

另一种方法是在空值种插入一个新的值。这种放啊不需要删除包含空缺值的行。通过fillna实现。

df.fillna(130, inplace = True)#将所有空缺值填充为130
df["Calories"].fillna(130, inplace = True)#将Calories列种的空缺值填充为130

常见的填充空缺值的方法是:计算平均数mean,中位数median,众数mode 填充
Pandas uses the mean() median() and mode() methods to calculate the respective values for a specified column

x = df["Calories"].mean()
df["Calories"].fillna(x, inplace = True)

x = df["Calories"].mode()
df["Calories"].fillna(x, inplace = True)

x = df["Calories"].median()
df["Calories"].fillna(x, inplace = True)

5.2 错误格式的数据

通常错误格式的数据有两种方法修改:删除错误数据的那一行;修改错误格式的数据为正确格式。
在上述样例中,存在日期格式错误;可以通过to_datetime()修正日期格式。

df['Date'] = pd.to_datetime(df['Date'])

5.3 错误的数据

错误的数据不是空值也不是格式错误,他就是一个错误的数据。【例如:199写成了1.99】
上述的样例中:duration列的数据在30-60之间,但是在row 7出现了450,虽然他可能不是错误,但是结合语境分析,一个人在450分钟内没有解决出来问题,是不正常的。
修改方法:

5.3.1修改为可能正确的数据

一种方法是通过某些数据对错误的数据进行修改。在样例中,450是错误的,但是猜测可能为45,因此将45替代450.

df.loc[7, 'Duration'] = 45

这种方法适用的场合在小数据集中。在小数据集中可以一个一个去修改替换错误的值。但是如果大一点的数据集,是不适用的。

5.3.2 设置正确的数据上下界

替换错误的值,在大数据集中通常采用一定的规则进行实现。例如可以设置一些合法数据的范围,超出范围的数据被替换为边界值。

for x in df.index:
  if df.loc[x, "Duration"] > 120:
    df.loc[x, "Duration"] = 120

5.3.3 删除错误数据所在的行

另一种方法是删除错误数据所在的行。
这种方法不需要寻找正确的值去替换错误的值,适用于不需要适用错误的数据进行分析。

for x in df.index:
  if df.loc[x, "Duration"] > 120:
    df.drop(x, inplace = True)

5.4 重复的数据

对于重复的数据,我们需要对其进行删除。

5.4.1 查找重复数据

duplicated函数返回一个和df相同行数的True和False Series序列表示是否为重复数据

#结果返回一个和df相同行数的True和False Series序列
df.duplicated()

5.4.2 删除重复数据

drop_duplicates():删除重复数据

df.drop_duplicates(inplace = True)

六、数据相关性

通过corr()方法计算数据集中每一列的相关性。【corr方法会自动忽略非数值的列】

df.corr()

在这里插入图片描述
【结果分析】
corr方法的返回值是一个表,包含了一些数据来表示每两列之间的相关性。
数据的范围咋子-1到1之间。

  • 相关性为1:表示这两列具有很强的正相关性。一列数据增加,另一列也会增加
  • 相关性为0.9:表示这两列具有较强的正相关性,一列数据增加,另一列可能会增加
  • 相关性为-0.9:表示这两列具有较强的负相关性,一列数据增加,另一列可能会减小
  • 相关性为0.2:0白哦是这两列相关性很弱,一列增加可能不会影响到另外一列。

什么是具有良好的相关性?取决于使用场合。但是w3school教程认为,0.6就是一个很安全的表示良好相关性的值。

  • 很好的相关性: "Duration"和 "Duration"之间的相关性为1,因此,这两列之间相关性特别强。
  • 较好的相关性:"Duration"和"Calories"相关性为0.922721,具有较好的相关性。可以认为,工作时间越长,消耗的卡路里越多;如果消耗的卡路里多,那么你可能工作时间很长。
  • 没有相关性:“Duration” and “Maxpulse” 的相关性为0.009403,这意味着我们不能仅通过观察输出的持续时间来预测最大脉冲,反之亦然

七、数据可视化

数据可视化部分和matplotlib相似,可以参考matplotlib可视化:基础绘图函数使用【函数功能+案例代码】

df = pd.read_csv('data.csv')
df.plot()
plt.show()

在这里插入图片描述

df = pd.read_csv('data.csv')
df.plot(kind = 'scatter', x = 'Duration', y = 'Calories')
plt.show()

在这里插入图片描述
In the previous example, we learned that the correlation between “Duration” and “Calories” was 0.922721, and we conluded with the fact that higher duration means more calories burned.By looking at the scatterplot, I will agree.

直方图只是用一列数据进行绘制,通常是拥挤每一个区间内数据的频率。
e.g. how many workouts lasted between 50 and 60 minutes?

df["Duration"].plot(kind = 'hist')

在这里插入图片描述

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

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

相关文章

微信群发工具,纯Python编写~

前言 接到了一个需求:现微信有8000好友,需要给所有好友发送一则一样的消息。网上搜索一番后,发现uiautomation 可以解决该需求,遂有此文。这是第五篇,也是最后一篇。 正如上面所见,这是uiautomition 微信群…

web前端期末大作业——网页制作基础大二dw作业——动画漫展学习资料电影模板(6页)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

「MySQL高级篇」MySQL存储引擎

本篇速览 早在MySQL基础篇的学习中,我们就一直看到innodb这个存储引擎,但是好像对于其他的存储引擎也没有去学习和了解,而innodb有何种特点也不得而知,而本篇将从一下四点,带你逐一攻破Ta: 1️⃣首先系统地…

golang 使用 make 创建 map 是否需要指定长度

大家都知道可以使用make方法来创建map类型,对比创建 slice 类型,创建map是否也需要指定len和cap两个参数呢? 如果map要容纳的数据比较多,其实是需要指定len属性的,我们可以从创建map的源码中了解到(本文都…

kubernetes(K8S)学习笔记P5:K8s核心概念2

kubernetes(K8S)学习笔记P4:K8s核心概念2-Helm、持久化存储技术5.Helm5.1Helm 引入5.2Helm 介绍5.3Helm v3 变化5.4安装与仓库配置5.4.1部署 helm 客户端5.4.2配置国内 chart 仓库(helm换源)5.5Helm快速部署5.5.1基本命…

前端面试题记录——vue

目录 前言 一、说一下虚拟DOM? 1.虚拟dom是什么? 2.虚拟dom是怎么产生的? 3.虚拟dom的优点 二、说一下vue-router?有几种模式? 1.vue-router是什么? 2.vue-router有几种模式?区别是什么&#xff1…

Secure Boot什么意思?BIOS中Secure Boot灰色无法更改解决方法详解

在电脑Bios设置中,有一项“Secure Boot”相关设置,很多小伙伴们不知道Secure Boot什么意思,也不知道如何设置。另外,有时候这个Secure Boot是灰色的无法更改,这又要如何解决呢?下面本文就来谈谈Secure Boot…

mybatis-plus使用generator快速生成代码,并手动添加数据库命令

mybatis-plus是mybatis的增强版,可以根据数据库自动生成代码,实现常用的增删改查功能,也可以按照mybatis的配置方式添加数据库命令。 参考地址: generator: 文档 http://baomidou.com/ 代码生成器配置新 | MyBatis-Plus 1、在p…

通过SASRec算法进行基于Transformer的商品推荐

案例简介 (1)方法概述: 本教程包含如下内容: 从原始的数据文件中加载数据,进行训练集和测试集的切分,并对测试集进行负采样。 对数据分batch, 利用用户历史点击记录进行模型训练 结果展示 (2)宏观流程图 2.准备工作 (1) 对应库的安装(以下是运行环境) tqdm==4.51.0 nump…

Java#25(常见算法: 查找算法)

目录 一.基本查找/顺序查找 从0索引开始挨个往后找 二.折半查找/二分查找 条件: 数组中的数据必须是有序的 核心逻辑: 每次排查一半的查找范围 优势: 提高查找效率 三.分块查找 分块查找的原则1: 前一块中的最大数据,小于后一块中所有的数据(块内无序,块间有序) 分块查…

1000套web前端期末大作业 HTML+CSS+JavaScript网页设计实例 企业网站制作【建议收藏】

一、1000套HTML期末学生结课大作业作品(HTMLCSSJS) 这8年来做了1000多套(HTMLCSSJS)网页设计的学生期末大作业,都是给学生定制的都符合学校或者学生考试期末作业的水平,都是divcss框架原创代码写的,有的有js,有的视频音乐flash的…

谷粒学苑_第十天

第十天 视频删除 后端 相关sdk在阿里云视频点播文档的服务端SDK–>Java SDK–>媒资管理–>删除视频 复制前面的InitObject到utils里 删除的方法 DeleteMapping("{id}")public R removeAliyunVideo(PathVariable String id){try{DefaultAcsClient defau…

parallelStream/ForkJoinPool 详解

parallelStream parallelStream是一种并行流, 意为处理任务时并行处理。 parallelStream底层使用的是ForkJoinPool。ForkJoinPool是一种工作窃取算法线程池,和分治法的概念一致,可以充分利用多 CPU 的优势,把一个任务拆分成多个"小任务…

云计算盛宴即将揭幕,re:Invent创新方向提前剧透

作为数字时代广大企业不可或缺的IT基础设施,云计算已经当仁不让地成为了数字经济的技术底座,同时也成为了当前全球备受关注和最热门的产业之一。作为云计算技术的开创者和领导者,亚马逊云科技自从2006年推出全球首个云计算服务以来&#xff0…

OpenCV图像特征提取学习三,LBP图像特征检测算法

一、LBP特征的概述 LBP指局部二值模式,英文全称:Local Binary Pattern,是一种用来描述图像局部特征的,LBP特征具有灰度不变性和旋转不变性等显著优点。同时是一种描述图像特征像素点与各个像素点之间的灰度关系的局部特征的非参数…

NestJS学习:控制器

参考 控制器 控制器负责处理传入的请求和向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。 控制器 上一篇文章已经介绍了路由的创建&#xff0c…

Redis缓存何以一枝独秀?以及热门面试题中Redis的核心特性

​Redis的各种数据类型 作为缓存组件,Redis的数据结构整体而言就是key-value类型的键值对,但是Redis对于value类型的支持还是比较丰富的,提供了5种不同的数据结构,可以满足大部分场景的使用诉求。 ​对几种类型的结构特点与使用注…

3天3定制大屏,反向PUA

摘要 本次分享一段无讨价还价余地的单人3天定制化大屏全过程(强调说拖拽屏的请绕道,和你想的不一样),要动效、要地图、要流光。天坑的心理博弈到最终解决的过程及技术思路。 前因 没啥征兆突然接到说,要在下周完成2个大屏的定制开发,起初没提…

C51 - 定时器

Contents1> 概述(STC89C51RC/RD)2> 作用: CPU的 "闹钟"3> 工作原理 (16位计数器)[TL0 TH0]: 数据寄存器TF: 定时器<溢出>标志位4> 程序设计1> 概述(STC89C51RC/RD) STC89C51RC/RD 定时器数量: 3个; T0模式:工作模式 模式0: 13位计数器; 模式1: …

理解循环神经网络

理解循环神经网络 之前有一篇文章已经初步介绍过RNN的原理(https://forchenxi.github.io/2021/04/23/nlp-rnn/)&#xff0c;里面其实已经介绍的比较清晰易懂了&#xff0c;这篇文章再来回顾和拓展一下. 首先要知道RNN是一个带有内部环的神经网络&#xff0c;上面的这篇文章中…