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

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

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.sdutlinux.org/

安装最新版本: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函数会在这篇博客中持续更新。

目录
相关文章
|
6月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
473 0
|
6月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
653 0
|
9月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
8月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
659 0
|
11月前
|
人工智能 Ruby Python
python__init__方法笔记
本文总结了Python中`__init__`方法的使用要点,包括子类对父类构造方法的调用规则。当子类未重写`__init__`时,实例化会自动调用父类的构造方法;若重写,则需通过`super()`或直接调用父类名称来显式继承父类初始化逻辑。文中通过具体代码示例展示了不同场景下的行为及输出结果,帮助理解类属性与成员变量的关系,以及如何正确使用`super()`实现构造方法的继承。
515 9
|
9月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
9月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
9月前
|
存储 JSON API
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,
|
12月前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
2153 3
|
12月前
|
数据采集 JSON API
Python 实战!利用 API 接口获取小红书笔记详情的完整攻略
小红书笔记详情API接口帮助商家和数据分析人员获取笔记的详细信息,如标题、内容、作者信息、点赞数等,支持市场趋势与用户反馈分析。接口通过HTTP GET/POST方式请求,需提供`note_id`和`access_token`参数,返回JSON格式数据。以下是Python示例代码,展示如何调用该接口获取数据。使用时请遵守平台规范与法律法规。
1258 0

推荐镜像

更多