Pandas使用技巧

news2024/11/24 8:55:49

Pandas 是一个强大的数据分析 Python 库,提供了一系列用于数据清洗、转换、分析和可视化的 API。在使用 Pandas 进行数据处理时,常见的指令包括:

  1. 数据读取和解析

read_csv():用于读取 CSV、Excel等格式的数据文件,并将其转换为 Pandas DataFrame 对象。

import pandas as pd  
  
# 读取 CSV 文件为 DataFrame  
df = pd.read_csv('data.csv')  
  
# 打印 DataFrame  
print(df)

read_excel():用于读取 Excel 文件,并将其转换为 Pandas DataFrame 对象。

  1. 利用pandas读取Excel多个表单

import pandas as pd
# 指定文件
excel_reader=pd.ExcelFile('文件.xlsx')  
# 读取文件的所有表单名,得到列表
sheet_names = excel_reader.sheet_names  
# 读取表单的内容,i是表单名的索引,等价于
# pd.read_excel('文件.xlsx', sheet_name=sheet_names[i]) 
df_data =  excel_reader.parse(sheet_name=sheet_names[i])

# 关闭reader
excel_reader.close()
  1. 利用pandas写入Excel多个sheet表单

import pandas as pd
# 定义writer,选择文件(文件可以不存在)
excel_writer = pd.ExcelWriter('文件.xlsx')  
# 写入指定表单
df1.to_excel(excel_writer, sheet_name='自定义sheet_name1', index=False)
df2.to_excel(excel_writer, sheet_name='自定义sheet_name2', index=False)   
# 储存文件
excel_writer.save()  
# 关闭writer
excel_writer.close()  

read_json():用于读取 JSON 格式的数据文件,并将其转换为 Pandas DataFrame 对象。

import pandas as pd  
from json import load  
  
# 加载 JSON 文件为 DataFrame,注意需要使用 load() 函数而不是 from json import load()  
df = pd.read_json('data.json', lines=True, dtype={'Name': str})
  1. 数据转换和筛选

  • apply():用于将指定函数应用于每行数据,返回一个包含结果的新数组。

函数功能展示:

# 定义一个函数,将每个元素加倍
def double(x):
    return x * 2

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

# 将函数应用于每个元素
df['C'] = df['A'].apply(double)
print(df)

结果输出:

   A   B   C
0  1  10   2
1  2  20   4
2  3  30   6
3  4  40   8
4  5  50  10
  • agg():用于对数据进行聚合操作,例如求平均值、总和等。

函数功能展示:

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

# 对列A求平均值和总和
result = df['A'].agg(['mean', 'sum'])
print(result)

结果输出:

mean    3.0
sum    15.0
Name: A, dtype: float64
  • groupby():用于根据某个字段对数据进行分组,返回每组的数据。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Emily', 'John'],
        'Age': [25, 30, 35, 40, 45],
        'City': ['New York', 'Paris', 'London', 'Paris', 'New York']}
df = pd.DataFrame(data)

# 根据City字段进行分组,并计算每组的平均年龄
result = df.groupby('City')['Age'].mean()
print(result)

结果输出:

City
London      35
New York    35
Paris       35
Name: Age, dtype: int64
  • head():用于获取数据开头的一部分数据。

函数功能展示:

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 获取前3行数据
result = df.head(3)
print(result)

结果输出:

   A
0  1
1  2
2  3
  • tail():用于获取数据末尾的一部分数据。

函数功能展示:

# 创建DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 获取最后3行数据
result = df.tail(3)
print(result)

结果输出:

   A
2  3
3  4
4  5
  1. 数据排序和过滤

  • sort_values():用于按照指定列对数据进行排序。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Emily'],
        'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)

# 按照Age列进行升序排序
df_sorted = df.sort_values('Age')
print(df_sorted)

结果输出:

   Name  Age
0  John   25
1  Jane   30
2  Mike   35
3  Emily  40
  • drop_duplicates():用于删除数据中重复的行,返回唯一的数据。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Emily', 'John'],
        'Age': [25, 30, 35, 40, 25]}
df = pd.DataFrame(data)

# 删除重复的行
df_unique = df.drop_duplicates()
print(df_unique)

结果输出:

   Name  Age
0  John   25
1  Jane   30
2  Mike   35
3  Emily  40
  • dropna():用于删除数据中符合条件的行,返回符合条件的数据。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', np.nan, 'Emily'],
        'Age': [25, np.nan, 35, 40]}
df = pd.DataFrame(data)

# 删除包含缺失值的行
df = df.dropna()
print(df)

结果输出:

   Name   Age
0  John  25.0
2  Emily  35.0
  1. 数据汇总和连接

  • join():用于将多个数据集合并成一个数据集。可以通过指定两个或更多的函数将两个数据集合并为一个新的数据集。

函数功能展示:

# 创建两个DataFrame
data1 = {'Name': ['John', 'Jane', 'Mike'],
         'Age': [25, 30, 35]}
df1 = pd.DataFrame(data1)

data2 = {'Name': ['Emily', 'Tom', 'Kate'],
         'City': ['New York', 'Paris', 'London']}
df2 = pd.DataFrame(data2)

# 使用join()函数将两个DataFrame按照Name列进行合并
df_merged = df1.join(df2.set_index('Name'), on='Name')
print(df_merged)

结果输出:

   Name  Age      City
0  John   25       NaN
1  Jane   30       NaN
2  Mike   35       NaN
  • merge():用于将两个或多个数据集合并成一个新的数据集。可以通过指定多个函数将两个或多个数据集合并为一个新的数据集。

函数功能展示:

# 创建两个DataFrame
data1 = {'Name': ['John', 'Jane', 'Mike'],
         'Age': [25, 30, 35]}
df1 = pd.DataFrame(data1)

data2 = {'Name': ['Emily', 'Tom', 'Kate'],
         'City': ['New York', 'Paris', 'London']}
df2 = pd.DataFrame(data2)

# 使用merge()函数将两个DataFrame按照Name列进行合并
df_merged = pd.merge(df1, df2, on='Name')
print(df_merged)

结果输出:

   Name  Age      City
0  John   25  New York
1  Jane   30       NaN
2  Mike   35       NaN

需要注意的是,join()和merge()函数默认进行左连接(left join),即保留左边DataFrame的所有行,并根据指定的列进行合并。如果需要其他类型的连接(如内连接、外连接等),可以通过指定how参数来实现。例如,使用merge()函数进行内连接:

df_merged = pd.merge(df1, df2, on='Name', how='inner')

还可以通过指定left_on和right_on参数来连接不同列名的DataFrame。

  1. 多维分析

pivot_table():用于将数据转换为表格形式,方便进行多维分析。

函数功能展示:

# 创建DataFrame
data = {'Name': ['John', 'Jane', 'John', 'Jane', 'John', 'Jane'],
        'Subject': ['Math', 'Math', 'Science', 'Science', 'Math', 'Science'],
        'Score': [80, 90, 85, 95, 75, 80]}
df = pd.DataFrame(data)

# 使用pivot_table()函数进行数据透视
pivot_table = df.pivot_table(index='Name', columns='Subject', values='Score', aggfunc='mean')
print(pivot_table)

结果输出:

Subject  Math  Science
Name                  
Jane     90.0     87.5
John     77.5     85.0

在上述示例中,我们通过指定index='Name'将姓名作为行索引,columns='Subject'将科目作为列索引,values='Score'将成绩作为要汇总的值,aggfunc='mean'指定了聚合函数为平均值。

pivot_table()函数根据指定的行、列和值对数据进行汇总和计算,生成了一个新的表格,其中行是姓名,列是科目,值是对应的平均分。这样,我们可以方便地进行多维分析,比如查看不同学生在不同科目上的平均分。

除了平均值,aggfunc参数还可以指定其他聚合函数,比如'sum'、'count'、'min'、'max'等,根据具体需求进行设置。

  1. 数据可视化

plot():用于绘制各种类型的图表,如柱状图、折线图、散点图等。它基于Matplotlib库,可以直接在Pandas中进行调用。

函数功能展示:

import pandas as pd
import matplotlib.pyplot as plt

# 创建DataFrame
data = {'Year': [2017, 2018, 2019, 2020],
        'Sales': [100, 150, 200, 180]}
df = pd.DataFrame(data)

# 绘制柱状图
df.plot(x='Year', y='Sales', kind='bar')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.title('Sales by Year')
plt.show()

输出结果是一个柱状图,横轴是年份,纵轴是销售额。在这个示例中,我们通过指定x='Year'y='Sales'来选择要绘制的数据列,然后指定kind='bar'来绘制柱状图。

结果输出:

# 绘制折线图
df.plot(x='Year', y='Sales', kind='line')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.title('Sales by Year')
plt.show()

输出结果:

hist():Pandas中用于绘制直方图的函数。直方图是一种可视化工具,用于显示数据的分布情况,特别适用于连续变量的数据。

函数功能展示:

import pandas as pd
import matplotlib.pyplot as plt

# 创建DataFrame
data = {'Scores': [70, 85, 90, 75, 80, 95, 85, 90, 80, 85]}
df = pd.DataFrame(data)

# 绘制直方图
df.hist(column='Scores', bins=5)
plt.xlabel('Score')
plt.ylabel('Frequency')
plt.title('Score Distribution')
plt.show()

通过指定column='Scores'选择要绘制直方图的数据列,bins=5指定直方图的分组数量。这样,直方图将数据分成了5个组,横轴是分数,纵轴是频数(数据在每个组中出现的次数)。

结果输出:

boxplot():Pandas中用于绘制箱线图的函数。箱线图是一种可视化工具,用于展示数据的分布情况和离群值。

函数功能展示:

import pandas as pd
import matplotlib.pyplot as plt

# 创建DataFrame
data = {'Group': ['A', 'A', 'B', 'B', 'C', 'C'],
        'Values': [10, 15, 20, 25, 30, 35]}
df = pd.DataFrame(data)

# 绘制箱线图
df.boxplot(column='Values', by='Group')
plt.xlabel('Group')
plt.ylabel('Values')
plt.title('Boxplot')
plt.show()

通过指定column='Values'选择要绘制箱线图的数据列,by='Group'指定了分组的列。这样,箱线图将数据按照不同的组进行分组,横轴是组别,纵轴是数值。

在绘制箱线图之前,需要先导入pandasmatplotlib.pyplot库。然后,使用boxplot()函数绘制箱线图,并使用xlabel()ylabel()title()函数设置坐标轴标签和图表标题。

箱线图展示了数据的五个统计量:最小值(lower whisker)、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)、最大值(upper whisker)。箱体表示了Q1到Q3之间的数据范围,中间的线表示中位数。离群值(outliers)通常以圆圈或叉形表示。

需要注意的是,boxplot()函数也可以接受其他参数来定制箱线图的样式,如设置颜色、填充颜色、须的长度等。根据需求,可以选择合适的参数进行设置。另外,boxplot()函数也支持同时绘制多个箱线图,比如按照不同的列进行分组。

结果输出:

  1. 数据处理和优化

groupby()agg() 函数结合使用,可以对同一列或同一行进行聚合操作,减少内存占用。

Pandas 的 lr=True 参数可以自动学习数据重分配策略,减少内存占用。

Pandas 提供了一些优化技巧,例如使用 rolling() 函数计算滚动窗口中的平均值等。

了上述指令外,Pandas 还有许多其他常见的指令,如:

  1. describe():用于查看数据的统计信息,例如均值、方差、标准差等。

  1. groupby()agg() 函数配合使用,可以对数据按照某个字段进行分组,并对每组数据进行聚合操作。

  1. rolling() 函数可以计算滚动窗口中的平均值,减少内存占用。

  1. drop_duplicates() 函数可以删除重复的行,并返回唯一的数据。

  1. tail() 函数可以获取数据末尾的一部分数据,方便进行数据分析。

使用 Pandas 进行数据处理时,还需要注意以下几点:

  1. 注意处理缺失值:Pandas 可以通过缺失值处理函数(如 fillna())来处理缺失值,但是在进行聚合操作时,缺失值可能会对结果产生影响。因此,需要根据具体情况选择合适的处理方法。

  1. 注意数据类型:Pandas 支持多种数据类型,包括 int、float、str、Series、DataFrame 等。在进行数据处理时,需要根据数据类型选择合适的函数和指令。

  1. 注意索引:Pandas 对于多维数据集(如矩阵)非常有用,但是索引也会影响数据处理效率。因此,需要合理地设置索引,并注意索引的类型和数量。

  1. 注意异常值:Pandas 对于异常值非常敏感,如果数据中存在异常值,可能会导致程序崩溃或产生不正确的结果。因此,需要注意异常值的处理和输出。

  1. 注意性能:在进行大规模数据处理时,需要注意 Pandas 的性能问题。可以通过调整参数(如缓冲区大小、分区方式等)来提高程序的性能。

总之,使用 Pandas 进行数据处理需要熟悉其指令和技巧,并注意处理数据中的各种问题,才能得到准确、高效的结果。

除了数据处理外,Pandas 还可以用于数据挖掘、机器学习等领域。以下是一些 Pandas 在数据挖掘和机器学习中的应用:

  1. 分类和回归:Pandas 可以用于多分类和回归问题,可以方便地处理复杂的数据集。

  1. 聚类:Pandas 可以用于层次聚类和k均值聚类等聚类算法,可以对数据进行快速聚类。

  1. 特征工程:Pandas 可以用于特征提取和降维,可以将高维数据转换为低维数据,并保留重要特征。

  1. 机器学习模型训练:Pandas 可以用于加载和预处理机器学习模型的输出,可以方便地处理大型数据集。

  1. 数据可视化:Pandas 可以用于绘制热力图、散点图、箱线图等图表,可以方便地对数据进行可视化分析。

总之,Pandas 是一个功能强大的 Python 库,可以用于数据清洗、转换、分析和可视化等多个领域。在进行数据处理和机器学习时,Pandas 可以提供很大的帮助。

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

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

相关文章

大数据:HDFS存储原理,fsck命令查看文件副本状态,namenode元数据,edits流水账,fsimage合并,hdfs读取数据

大数据:HDFS存储原理,fsck命令查看文件副本状态,namenode元数据,edits流水账,fsimage合并,hdfs读取数据 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人&#xff0…

django业务流程配置

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

【MySQL】如何速通MySQL(2)

📌前言:本篇博客介绍如何速通MySQL的第二篇,主要介绍Mysql中主要的基础的入门,学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。或者看一下下面这个链接…

结构方程模型(SEM)以及用R语言实现

目录 结构方程模型概述 结构方程模型匹配 1.协方差SEM 2.分段SEM 在R语言中实现sem进行结构方程建模和路径图可视化 – 拓端tecdat 结构方程模型是一个线性模型框架,它对潜变量同时进行回归方程建模。 ​​​​​​​在R语言中实现SEM进行结构方程建模和路径图…

VPP 编译记录

目录 虚拟机安装 VPP编译 下载一些工具 下载vpp源码 编译 首次构建 非首次直接编译 虚拟机安装 由于使用的统信系统作为宿主机器,在上面貌似只有VM virtualBox软件,先在应用商店安装此应用。 下载ubuntu 64位镜像 一开始没注意下载了32位的系统…

基于springboot_vue的学生在线选课java教学质量评价系统

对教师教学质量进行客观公正的评价,是一项十分严肃和重要的工作。是引导教师进行教学方法改进,提高教学质量的重要手段。它以教师的教学活动为主要评价对象,通过教学评价,发现存在的问题,了解学生的实际学习状况,明确教学改进的努力方向。但是…

【算法系列之二叉树II】leetcode112. 路径总和

257. 二叉树的所有路径 力扣题目链接 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 输入:root [1,2,3,null,5] 输出:["1->2->5","…

解决spark程序 Permission denied: user=<username>, access=WRITE...等常见hive权限报错

Permission Denied Permission Denied: 这是最常见的错误消息之一&#xff0c;表示当前用户没有足够的权限执行写入操作。报错信息可能类似于&#xff1a; org.apache.hadoop.security.AccessControlException: Permission denied: user<username>, accessWRITE, inode&…

Linux教程——操作系统是什么,操作系统概述

Linux 也是众多操作系统之一&#xff0c;要想知道 Linux 是什么&#xff0c;首先得说一说什么是操作系统。 计算机是一台机器&#xff0c;它按照用户的要求接收信息、存储数据、处理数据&#xff0c;然后再将处理结果输出&#xff08;文字、图片、音频、视频等&#xff09;。计…

Linux高级---k8s安全认证

文章目录 一、访问控制概述1、客户端2、认证、授权与准入控制 二、认证管理1、认证方式2、HTTPS认证大体分为3个过程 三、授权管理1、授权策略2、RBAC3、Role、ClusterRole4、RoleBinding、ClusterRoleBinding5、RoleBinding引用ClusterRole进行授权6、实战&#xff1a;创建一个…

Java线程池总结

背景 Java线程池的写法和参数是面试中出现频率很高的基础题。越是基础的东西&#xff0c;特别是对高阶职位的面试者&#xff0c;需要回答的符合自己面试的职位等级。 这里也不能说是一个多么好的答案&#xff0c;只是说如果是我&#xff0c;我怎么回答&#xff0c;仅供参考。…

Java --- springboot3依赖管理和自动配置机制

目录 一、依赖管理机制 二、自动配置机制 一、依赖管理机制 &#x1f695;、为什么导入starter-web所有相关依赖都导入进来&#xff1f; ①、开发什么场景&#xff0c;导入什么场景启动器。 ②、maven依赖传递原则。A-B-C&#xff1a; A就拥有B和C ③、导入 场景启动器。 场…

JavaScript 发展的前世今生

专栏介绍 本专栏主要用作于开放性知识点分享学习&#xff0c;其主要知识点范围是 以围绕 原生 JavaScript 语法 从基础知识到高阶语法阶段的学习分享。 导语&#xff1a; 既然博主&#xff0c;计划将此专栏打造为 JavaScript 的知识点学习分享集结地。所以&#xff0c;本章节就…

奥威BI,适合中国电商的大数据分析平台

电商数据分析做得好不好&#xff0c;除了分析思维这类主要因素外&#xff0c;大数据分析平台的选择也尤为重要。从电商数据分析实际体验来看&#xff0c;电商行业需要大数据分析平台需满足海量数据秒分析、数据直观易懂、操作简单易上手这三大基础要求&#xff0c;如能提供系统…

Tomcat下载安装以及配置

目录 tomcat的下载安装 修改控制台乱码 idea配置tomcat tomcat的下载安装 到tomcat的官网https://tomcat.apache.org/下载所需版本&#xff0c;我们下载的tomcat必须要和我们的jdk相匹配否则会导致tomcat运行和部署的时候出错&#xff0c;挑选tomcat的版本的时候参考下图 …

阿里系cookie之acw_sc__v2 逆向分析

文章目录 声明案例地址目标参数加密流程与逆向分析js代码python调用测试声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! cookie中使用acw_sc__v2的网站有很多,比如前程无忧、诸葛找房、…

2023年6月跟资深软考辅导专家学习备考软考(中/高级)到这家

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

收集关键词的方法有哪些?(如何查找精准的行业流量关键词)

关键词的收集通常可以通过以下几种方法: 关键词收集方法 1.根据市场价值、搜索词竞争性和企业实际产品特征进行筛选&#xff1a;确定您的关键词列表之前&#xff0c;建议先进行市场分析&#xff0c;了解您的竞争对手、行业状况和目标受众等信息&#xff0c;以更好地了解所需的特…

if __name__ == ‘__main__‘详细解释及实操演示

在Python中&#xff0c;每个模块都有一个内置的变量 name&#xff0c;用于表示当前模块的名称。当一个Python文件被执行时&#xff0c;Python解释器会首先将该文件作为一个模块导入&#xff0c;并执行其中的代码。此时&#xff0c;__name__的值为模块的名称。 if name ‘main…

浅谈RPC,gRPC和RESTful

RPC 远程过程调用&#xff08;Remote Procedure Call&#xff0c;RPC&#xff09;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间&#xff08;通常为一个开放网络的一台计算机&#xff09;的子程序&#xff0c;而程序员就像调用本地程序一样&…