Python~Pandas 小白避坑之常用笔记

news2025/7/11 18:32:56

Python~Pandas 小白避坑之常用笔记


提示:该文章仅适合小白同学,如有错误的地方欢迎大佬在评论处赐教

文章目录

  • Python~Pandas 小白避坑之常用笔记
  • 前言
  • 一、pandas安装
  • 二、数据读取
    • 1.读取xlsx文件
    • 2.读取csv文件
  • 三、重复值、缺失值、异常值处理、按行、按列剔除
    • 1.重复值统计、剔除:
    • 2.缺失值统计、剔除:
    • 3.遍历pandas对象进行异常值剔除、修改
    • 4.按行、按列剔除
  • 四、数据提取、loc、iloc的使用
    • 1.根据列名提取数据
    • 2.loc数据提取
    • 3.iloc数据提取
    • 4.loc常用示例
  • 五、常用的操作函数
  • 六、数据运算函数
    • 1.常用的运算函数
    • 2.分组运算 ~ groupby
    • 3.聚合运算 ~ groupby、agg
    • 4.pandas - map()
  • 七、数据文件输出
    • 1.xlsx写入
    • 2.csv写入
  • 总结


前言

1、Pandas是python的一个数据分析包,为解决数据分析任务而创建的;
2、Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具;
3、pandas提供了大量能使我们快速便捷地处理数据的函数和方法;它是使Python成为强大而高效的数据分析环境的重要因素之一;

示例数据(csv,xlsx)地址自行提取-提取码:3uqa:https://pan.baidu.com/s/1Tz-NiSgpCyzOOW5LvPKHEA?pwd=3uqa


提示:以下是本篇文章正文内容,下面案例可供参考

一、pandas安装

镜像地址
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

安装最新版本:pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

我的pandas版本:1.1.3;

指定版本安装:pip install pandas==1.1.3 -i https://pypi.tuna.tsinghua.edu.cn/simple

二、数据读取

1.读取xlsx文件

read_excel() 参数介绍:
io:文件地址
sheet_name:工资表中的子表名,默认为:sheet1
index_col: 指定行索引, 默认None, 可以是数字/list
usecols:usecols=[‘user’,“pwd”] 指定user,pwd列进行读取、默认(usecols=None)全部读取
skiprows:根据数字索引跳过行数据,默认从第0行开始

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
print(sheet1.head(5))  # 控制台打印前5条数据

在这里插入图片描述

2.读取csv文件

read_csv()参数介绍:
filepath_or_buffer:文件地址
sep:以什么分隔,sep=“\t"以tab键分隔,默认以英文逗号(”,")分隔
index_col: 指定行索引, 默认None, 可以是数字/list
usecols:usecols=[‘user’,“pwd”] 指定user,pwd列进行读取、默认(usecols=None)全部读取
skiprows:根据数字索引跳过行数据,默认从第0行开始

import pandas as pd

sheet1 = pd.read_csv(filepath_or_buffer='非洲通讯产品销售数据.csv', sep=',', skiprows=0, usecols=None)
print(sheet1.head(5))  # 控制台打印前5条数据

在这里插入图片描述

三、重复值、缺失值、异常值处理、按行、按列剔除

1.重复值统计、剔除:

import pandas as pd

sheet1 = pd.read_csv(filepath_or_buffer='long-customer-train.csv', sep=',', skiprows=0, usecols=None) 
duplicated_num = sheet1.duplicated(subset=['user_id']).sum()  # 统计user_id列 重复值的数量
print("user_id重复列数:", duplicated_num)
sheet1.drop_duplicates('user_id', inplace=True)
duplicated_num = sheet1.duplicated(subset=['user_id']).sum()  # 再次统计user_id列 重复值的数量
print("剔除后-user_id重复列数:", duplicated_num)

在这里插入图片描述

2.缺失值统计、剔除:

dropna()参数介绍:
axis:0(对行数据进行剔除)、1(对列数据进行剔除),默认为0
how:any(行中有任意一个空值则剔除), all(行中全部为空值则剔除)
inplace:是否在该对象进行修改

import pandas as pd

sheet1 = pd.read_csv(filepath_or_buffer='long-customer-train.csv', sep=',', skiprows=0, usecols=None) 
all_null = sheet1.isnull().sum(axis=0).sum()   # 统计所有的缺失值行数
print("缺失值行数:", all_null)
sheet1.dropna(axis=0, how='any', inplace=True)  # 剔除每行任一个为空值的数据
all_null = sheet1.isnull().sum(axis=0).sum()   # 统计所有的缺失值行数
print("剔除后的缺失值行数:", all_null)

在这里插入图片描述

3.遍历pandas对象进行异常值剔除、修改

需求:“Age”列存在数值为-1、0 和“-”的异常值,删除存在该情况的行数据;“Age”列存在空格和“岁”等异常字符,删除这些异常字符但须保留年龄数值

import pandas as pd

sheet1 = pd.read_csv(filepath_or_buffer='long-customer-train.csv', sep=',', skiprows=0, usecols=None) 
print("异常值处理前:")
print(sheet1['Age'].head(5))

for index, row in sheet1.iterrows():
    if '-' in row['Age'] or len(row['Age'].strip()) < 1:  # 异常值特征定义
        sheet1.drop(index=index, inplace=True)  # 根据索引就行剔除
    elif '岁' in row['Age']:
        row['Age'] = row['Age'].replace('岁', '').strip()  # 需要修改的字段定义
        sheet1.loc[index] = row  # 根据索引对该行数据进行修改
    elif float(row['Age']) <= 0:
        sheet1.drop(index=index, inplace=True)
print("异常值处理后:")
print(sheet1['Age'].head(5))

在这里插入图片描述

4.按行、按列剔除

import pandas as pd

sheet1 = pd.read_csv(filepath_or_buffer='long-customer-train.csv', sep=',', skiprows=0, usecols=None)
print(sheet1.head(5))
sheet1.drop(index=0, inplace=True)  # 根据索引,行剔除
sheet1.drop(labels=['城市', '地区'], axis=1, inplace=True)  # 按列 删除(城市, 地区)print(sheet1.head(5))

在这里插入图片描述

四、数据提取、loc、iloc的使用

1.根据列名提取数据

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
area_list = sheet1['地区'].values.tolist()  # 提取地区列,转为list
sheet1_data_list = sheet1.values.tolist()
print("地区列:", area_list[:5])  # 一维列表
print("全部列:", sheet1_data_list[:5])  # 二维列表

在这里插入图片描述

2.loc数据提取

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
sheet1 = sheet1.loc[0:4, ['日期', '国家']]  # 提取前5, 日期、国家列

在这里插入图片描述

3.iloc数据提取

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
sheet1 = sheet1.iloc[0:4, 1:3]  # 提取前5, 123

在这里插入图片描述

4.loc常用示例

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
print(sheet1.head(5))
# 根据条件 指定"利润"字段赋值, 条件符号:或(|),与(&)
sheet1.loc[(sheet1['销售额'] <= 600) & (sheet1['利润'] <= 20), '利润'] = 8888  
print(sheet1.head(5))

在这里插入图片描述

五、常用的操作函数

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
# print(sheet1.head(5))  # 打印前5条数据
# print(sheet1.tail(5))  # 打印最后5条数据
# print(sheet1.shape)  # 打印行数和列数
# print(sheet1.columns.tolist())  # 提取列名转为list
# sheet1['国家'] = sheet1['国家'].astype(str)  # 修改字段类型
# sheet1.columns = ['test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7']  # 设置列名
# sheet1.rename(columns={'国家': '国家-test'}, inplace=True)  # 修改列名
# sheet1.fillna(value=0, inplace=True)  # 填充空值, value=填充的值
# sheet1['年度'] = sheet1['日期'].dt.year  # 根据日期字段 新增年份列
# sheet1['季度'] = sheet1['日期'].dt.quarter  # 根据日期字段 新增季度列
# sheet1.reset_index()  # 重置索引
# sheet1.concat(obj1, obj2)  # 将两个DataFrame对象进行合并

六、数据运算函数

1.常用的运算函数

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
# print(sheet1['利润'].sum())  # 该列求和
# print(sheet1['利润'].max())  # 该列最大值
# print(sheet1['利润'].min())  # 该列最小值
# print(sheet1['利润'].mean())  # 该列平均值
# print(sheet1['利润'].mean(axis=1))  # 每行 平均值
# print(sheet1['利润'].median())  # 该列中位数

2.分组运算 ~ groupby

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
sheet1['年度'] = sheet1['日期'].dt.year  # 根据日期字段 新增年份列
sheet1['季度'] = sheet1['日期'].dt.quarter  # 根据日期字段 新增季度列
# 按年度分组,指定销售额列进行求和计算
compute_result = sheet1.groupby("年度")['销售额'].sum()  
print(compute_result)

在这里插入图片描述

3.聚合运算 ~ groupby、agg

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
sheet1['年度'] = sheet1['日期'].dt.year  # 根据日期字段 新增年份列
sheet1['季度'] = sheet1['日期'].dt.quarter  # 根据日期字段 新增季度列
# 针对字段:年度、国家进行分组,求和计算字段:销售额、利润
compute_result = sheet1.groupby(['年度', '地区']).agg({"销售额": 'sum', "利润": "sum"})
print(compute_result)
# agg 聚合, 可用列表和字典作为参数, 常用函数:mean/sum/median/min/max/last/first
# 分组后对某列进行多个函数计算
# compute_result = sheet1.groupby(['年度', '地区']).agg({"销售额": ['sum', 'min'], "利润": [np.mean, max]})  

在这里插入图片描述

4.pandas - map()

def data_parse(rows):
    return '1111'

# map() 将该列的元素迭代传入data_parse()函数作为参数,可以在函数内对该数据进行处理,return一个新值
sheet1['国家'] = sheet1['国家'].map(data_parse)
print(sheet1.head(5))

在这里插入图片描述

七、数据文件输出

1.xlsx写入

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
sheet1 = sheet1.loc[0:4, ['日期', '国家']]  # # 提取前5, 日期、国家列
sheet1.to_excel(excel_writer='test.xlsx')

在这里插入图片描述

2.csv写入

import pandas as pd

sheet1 = pd.read_excel(io='非洲通讯产品销售数据.xlsx', sheet_name='SalesData', skiprows=0, usecols=None)
sheet1 = sheet1.loc[0:4, ['日期', '国家']]  # # 提取前5, 日期、国家列
sheet1.to_csv(path_or_buf='test.csv')

在这里插入图片描述


总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法,续有常用的pandas函数会在这篇博客中持续更新。

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

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

相关文章

pytest allure 生成报告过程

allure 下载地址&#xff1a;Releases allure-framework/allure2 GitHub 下载好后配置环境变量执行&#xff1a; allure --version 看见版本号就算配置成功了 pytest allure 生成报告过程 allure添加测试类名&#xff0c;方法名&#xff0c;步骤&#xff1a; allure.fea…

【附源码】计算机毕业设计JAVA教学成果管理平台录像演示

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

教你一招轻松搞定mp3格式转换

第一种&#xff1a;ncm转mp3 经常使用网易云音乐的朋友应该会发现&#xff0c;网易云VIP音乐下载后&#xff0c;有些音乐是ncm格式的&#xff0c;无法导入PR或者一些编辑软件。 解决方法如下&#xff1a; 利用在线网站处理——Convertio 第一步&#xff1a;打开谷歌浏览器客户端…

9家美发连锁店老板一天剪辑1000个视频,用呆头鹅批量剪辑软件剪

1.1呆头鹅批量剪辑软件核心优势 01.我们的产品是经过市场考验的&#xff0c;像有结果的人学习&#xff0c;买有结果的产品。 02.3年的打磨&#xff0c;更新和删除了200多个模块 03.100多次持续优化更新 04.10000个公司和工作室和个人的使用和建议。 05.一个用户至少做出100…

磁盘有空间但无法创建文件

面试原题 我们去面试的时候,面试官通常会问一个问题, “小伙子,你在这些年的工作中,遇到过什么棘手的问题没有? 面试官问这个问题,无非想知道以下几件事情 你有没有过处理疑难问题的经验你解决问题的思路和能力如何你是怎么解决的你解决完这个问题有哪些收获 面试错误示范 …

Java生成验证码+动态分析技术+【实训10】HTML信息隐藏(信息安全技术作业)

Java生成验证码 第1关&#xff1a;使用Servlet生成验证码 任务要求参考答案评论 任务描述相关知识 为什么要有验证码&#xff0c;什么是验证码如何使用Servlet生成验证码编程要求测试说明任务描述 本关任务&#xff1a;使用servlet生成验证码。 相关知识 验证码在我们登陆…

硬链接及软连接引出的inode

inode定义 inode是linux系统中用作数据索引的标识符。简单来说&#xff0c;inode指示了一个文件的基本信息&#xff0c;如inode编号、修改时间、文件的位置等。 如同一本书的目录&#xff0c;会直接告诉你想看的章节是在第几页。不同的是&#xff0c;书是以页为单位的&#x…

软考 - 数据结构与算法

数据结构 线性结构 线性表 存储结构 顺序存储&#xff1a;用一组地址连续的存储单元 依次存储线性表中的数据元素&#xff0c;使得逻辑上相邻的元素物理上也相邻。 链式存储&#xff1a;存储各数据元素的结点的地址并不要求是连续的&#xff0c;数据元素逻辑上相邻&#xff…

提升Mac运行速度的三大方法

任何一部电子设备在使用多年之后都会出现性能下降的问题&#xff0c;苹果的Mac计算机自然也不例外。当你发现Mac运行缓慢&#xff0c;因为有太多文件或缓存垃圾将Mac的运行速度拖了下来。 要想提高生活和工作效率&#xff0c;必须对Mac进行优化&#xff0c;提升一下Mac 的使用性…

全业务链管理平台Odoo

什么是 Odoo ? Odoo 是一款非常容易使用又完全集成的商业应用&#xff0c;是一站式全业务链管理平台。 docker cli 安装 本项目涉及到 2 个容器&#xff0c;之前我们在下面&#x1f447;这些文章中 开源的看板管理工具Wekan类Trello的看板软件Planka群晖上安装MediaWiki的简…

linux系统java环境变量的下载与安装

由于目前好多工具的安全使用需要安装java环境&#xff0c;所有今天就分享一下java环境变量的安装与配置下载地址&#xff1a; https://download.oracle.com/otn/java/jdk/8u351-b10/10e8cce67c7843478f41411b7003171c/jdk-8u351-linux-i586.tar.gz?AuthParam1668564371_517fa4…

【2022.11.16】Lammps+Python+MATLAB在绘制维诺图时遇到的问题

目录写在前面绘制g6(r)执行步骤问题1&#xff1a;数据导入问题2&#xff1a;利用Python选取想要的数据问题3&#xff1a;如何找到每个点的最近邻问题4&#xff1a;绘制维诺图写在前面 记录一下做毕设时候遇到的问题 大目标是绘制g6的图片 相关文章&#xff1a; [1] Zu M , Li…

艾美捷可电离脂质SM-102解决方案

艾美捷SM-102是一种用于脂质纳米颗粒&#xff08;LNP&#xff09;的可电离脂质。LNP组合物已被证明有效地作为生物活性物质如小分子药物、蛋白质和核酸的运输载体进入细胞和/或细胞内隔室。这是一种试剂级产品&#xff0c;仅供研究使用。 艾美捷SM-102基本参数&#xff1a; 类…

企业管理 - 波司登战略管理解析

波司登战略管理解析 领导人讲话&#xff0c;视频&#xff1a;国家的战略&#xff0c;建设有中国特色的社会主义 这是一个文化大过滤时代&#xff1a;从宏观来讲&#xff0c;大的社会环境&#xff0c;包括现象&#xff0c;反腐&#xff0c;教育改革&#xff0c;把中华民族优秀…

Go(八)函数

目录 1. 函数 1.1 函数定义 1.2 函数的调用 1.3 参数 1.3.1 类型简写 1.3.2 可变参数 1.4 返回值 1.4.1 多返回值 1.4.2 返回值命名 1.4.3 返回值补充 2. 函数进阶 2.1 变量作用域 2.1.1 全局变量 2.1.2 局部变量 2.2 函数类型与变量 2.2.1 定义函数类型 2.2.…

FL Studio21免许可证完整版数字音频工作站(DAW)

如果你一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家)&#xff0c;你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这样的…

K3s离线部署

下载离线镜像包 离线镜像包下载地址 因为我的环境是CentOS 7.7&#xff0c;所以下载红框里的两个 下载部署脚本 部署脚本下载地址&#xff08;https://get.k3s.io&#xff09; 将准备好的文件上传到服务器上后&#xff0c;将k3s二进制文件及镜像包放到指定目录&#xff08;每…

大数据在线实习项目能收获什么呢?

大数据在线实习项目提供在线大数据项目&#xff0c;参与真实企业项目&#xff0c;可提供实习证明。 项目实习过程会根据项目背景、项目目标、项目数据来逐一展开&#xff0c;一个项目的项目周期大概为4周时间&#xff0c;同时也可以根据自身时间条件来调整。 项目涉及多方面知识…

CSC公派|高职院校教师赴澳大利亚大学访学

L老师只是高职院校护理与助产学专业教师&#xff0c;硕士学位&#xff0c;却能在众多申请者中脱颖而出&#xff0c;一举中榜。原因之一是接收学校专门设有护理与助产学院且排名靠前&#xff0c;导师的研究方向和L老师高度相符&#xff0c;在访学的必要性、可行性及应用前景上占…

线路测量通用公式的推导及编程

wyqzm网友&#xff1a; 问几个问题1、点到中线的垂距计算公式是怎么推导出来的&#xff0c;就是那个S&#xff1d;&#xff08;XA-XB&#xff09;SIN....我怎么也看不明白这是一个什么样的公式&#xff1f;别笑话哦&#xff01; 2、假如一条线路有很多的曲线组合&#xff0c;怎…