数据分析利器:pandas库的奥秘与代码示例

news2024/12/23 18:47:40

pandas是Python中一款强大的数据分析库,它提供了数据清洗、数据操作、数据可视化等功能,使得数据分析与处理变得更加高效和便捷。本文将从基本概念、基础知识、高级特性、实战案例和总结五个方面,深入介绍pandas库的用法和技巧。

在这里插入图片描述

一、基本概念

pandas库中的核心是DataFrame,它是一个二维表格型数据结构,类似于Excel表格。每一列是一个变量,每一行是一个数据记录。DataFrame支持以行为单位或以列为单位的数据访问,也支持复杂的数据筛选和计算。除了DataFrame,pandas库还提供了Series对象,它是一维数组,可以理解为只有一列的DataFrame。

二、基础知识

数据类型

pandas支持多种数据类型,包括数值型、字符型、布尔型等。常用的数据类型包括float(浮点数)、int(整数)、str(字符串)、bool(布尔值)等。下面是一些数据类型的示例代码:

import pandas as pd  
  
# 创建一个DataFrame对象  
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}  
df = pd.DataFrame(data)  
  
# 创建一个Series对象  
series = pd.Series([1, 2, 3, 4], dtype='int')
运算符
pandas支持基本的数学运算符,如+-*/等,也支持比较运算符,如==!=><等。对于DataFrame对象,还可以使用布尔索引来筛选数据。下面是一个使用运算符的示例代码:

python
# 使用数学运算符计算DataFrame的平均值  
mean = df.mean()  
print(mean)  
  
# 使用布尔索引筛选DataFrame的数据  
filtered_df = df[df['age'] > 30]  
print(filtered_df)

数组操作

pandas的Series和DataFrame对象都支持数组操作,如切片、索引、合并等。此外,还可以使用多种函数对数据进行聚合、过滤和排序。下面是一个使用数组操作的示例代码:

# 对DataFrame进行切片操作  
print(df.iloc[0:2])  
  
# 对Series进行索引操作  
indexed_series = series[1:4]  
print(indexed_series)  
  
# 对DataFrame进行排序操作  
sorted_df = df.sort_values('age')  
print(sorted_df)

字符串操作

pandas的字符串操作与Python内置的字符串操作类似,支持字符串连接、截取、替换等操作。下面是一个使用字符串操作的示例代码:

# 对Series进行字符串连接操作  
concatenated_series = series.str.cat()  
print(concatenated_series)

函数

pandas提供了丰富的函数,可以对数据进行计算、统计和分析。例如,mean()函数可以计算数据的平均值,std()函数可以计算数据的标准差,groupby()函数可以按指定列进行数据分组等。下面是一些使用函数的示例代码:

# 使用mean()函数计算DataFrame的平均值  
mean = df.mean()  
print(mean)  
  
# 使用std()函数计算DataFrame的标准差  
std = df.std()  
print(std)  
  
# 使用groupby()函数按指定列进行数据分组  
grouped_df = df.groupby('age')  
print(grouped_df)

在这里插入图片描述

三、高级特性

内置类型转换

pandas提供了便捷的类型转换方法,可以将数据转换为不同的类型,如将字符串转换为日期类型、将浮点数转换为整数等。下面是一个使用类型转换的示例代码:

# 将字符串转换为日期类型  
df['date'] = pd.to_datetime(df['date'])  
  
# 将浮点数转换为整数  
df['age'] = df['age'].astype('int')

多维数组和矩阵

pandas的DataFrame对象可以看作是一个二维数组或矩阵,支持矩阵运算和线性代数操作。此外,还可以使用numpy库进行更复杂的数组操作和矩阵运算。下面是一个使用矩阵运算的示例代码:

import numpy as np  
  
# 创建一个numpy数组  
numpy_array = np.array([[1, 2], [3, 4]])  
  
# 将numpy数组转换为pandas DataFrame  
df = pd.DataFrame(numpy_array)  
print(df)  
  
# 对DataFrame进行矩阵运算  
result = np.dot(df, numpy_array)  
print(result)

非线性编辑

pandas支持多种非线性编辑操作,如数据插值、缺失值填充、异常值处理等。这些操作可以提高数据的准确性和可靠性。下面是一个使用插值方法的示例代码:

# 使用插值方法填充缺失值  
interpolated_df = df.interpolate()  
print(interpolated_df)
图像处理
pandas的图像处理功能相对较弱,但可以与OpenCV等图像处理库结合使用,实现图像的读取、分析和处理。下面是一个使用OpenCV库进行图像处理的示例代码:

python
import cv2  
  
# 读取图像  
image = cv2.imread('image.jpg')  
  
# 使用pandas读取包含图像信息的CSV文件  
df = pd.read_csv('image_data.csv')  
  
# 将CSV文件中的图像信息还原为图像  
restored_image = df['image'].values[0]  
cv2.imshow('Restored Image', restored_image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

四、实战案例

下面以一个简单的例子来说明如何使用pandas进行数据分析。假设有一个包含用户购买信息的CSV文件,我们需要分析用户的购买偏好和购买频率。

读取数据

使用pandas的read_csv()函数读取CSV文件,并将其存储为DataFrame对象。下面是一个读取数据的示例代码:

import pandas as pd  
  
# 读取CSV文件  
df = pd.read_csv('purchase_data.csv')  
print(df)

读取Excel、文本、CSV等不同类型数据

#-*-coding:utf-8-*- 
import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
aa ='../data/TB2018.xlsx'
df = pd.DataFrame(pd.read_excel(aa))
df1= df[['买家会员名','买家实际支付金额']]
print(df1)

print('---------获取股票数据-----------')

bb ='../data/000001.csv'
df = pd.read_csv(bb,encoding = 'gbk')
df1= df[['date','open','high','close','low']]
df1.columns = ['日期','开盘价','最高价','闭市价','最低价']
print(df1)
print('---------获取文本数据-----------')
cc ='../data/fl4_name.txt'
df = pd.read_csv(cc,encoding='gbk')
print(df)

如何选取Excel指定行和(或)列数据

import pandas as pd
aa ='../data/TB2018.xls'
df = pd.DataFrame(pd.read_excel(aa))
print('------------------按行选取数据-----------------')
print(df[0:1])	#第0行
print(df[:5])	#第5行之前的数据(不含第5行)
print(df[1:5]) #第1行到第4行(不含第5行)
print(df[-1:]) #最后一行
print(df[-3:-1]) #倒数第3行到倒数第1行(不包含最后1行即倒数第1行)

print('------------------按列选取数据-----------------')
df1=df[['买家会员名','买家实际支付金额', '订单状态']] #选取多列,多列名字要放在list里
print(df1)


print('------------------按行列的综合选取数据-----------------')
#选取某一行(如第2行)的“买家会员名”和“买家实际支付金额”
print(df.loc[[2],['买家会员名','买家实际支付金额']])
#选取第2、3行的“买家会员名”和“买家实际支付金额”
print(df.loc[[2,3],['买家会员名','买家实际支付金额']])
#如果列名太长可以使用iloc方法
print(df.iloc[0:3,[0,3,4,5]])

print('------------------')
# 另外可以使用at方法选取“买家会员名”列的第3行数据
print(df.at[3, '买家会员名'])
#使用索引代替列名
print(df.iat[3,0])

数据清洗

对数据进行清洗,包括去除无效数据、填充缺失值、处理异常值等。下面是一个数据清洗的示例代码:

# 去除无效数据  
df = df[df['age'] > 0]  
print(df)  
  
# 填充缺失值和异常值处理,这里使用插值方法填充缺失值和异常值处理。你可以根据具体情况选择不同的方法。使用条件是年龄必须大于等于18岁的数据作为有效数据,其余为无效数据。年龄小于等于18岁的数据用NaN表示,其余用平均值表示。异常值用中位数表示。异常值的判断标准是价格大于等于1000元的数据作为异常数据。使用条件是价格必须小于1000元的数据作为有效数据,其余为异常数据。异常值用中位数表示。异常值的判断标准是价格大于等于1000元的数据作为异常数据。使用条件是价格必须小于1000元的数据作为有效数据,其余为异常数据。异常值用中位数表示。使用条件是价格必须小于1000元的数据作为有效数据,其余为异常数据。异常值用中位数表示。

# 数据清洗
df['age'] = np.where(df['age'] <18, np.nan, df['age'].mean())
df['price'] = np.where(df['price'] >= 1000, np.nan, df['price'].median())

数据操作

对数据进行操作,包括数据筛选、排序、聚合等。下面是一个数据操作的示例代码:

# 数据筛选  
filtered_df = df[df['age'] > 30]  
print(filtered_df)  
  
# 数据排序  
sorted_df = df.sort_values('sales')  
print(sorted_df)  
  
# 数据聚合  
grouped_df = df.groupby('category')  
print(grouped_df['sales'].sum())

数据可视化

使用matplotlib等库将数据分析结果进行可视化,以便更好地理解用户的购买偏好和购买频率。下面是一个数据可视化的示例代码:

import matplotlib.pyplot as plt  
  
# 绘制条形图展示不同类别的销售总额  
plt.bar(grouped_df.index, grouped_df['sales'].sum())  
plt.xlabel('Category')  
plt.ylabel('Sales Total')  
plt.show()  
  
# 绘制直方图展示价格的分布情况  
plt.hist(df['price'], bins=20)  
plt.xlabel('Price')  
plt.ylabel('Frequency')  
plt.show()

五、总结

pandas库在数据分析与处理方面具有诸多优势,包括简单易用、功能强大、高效稳定等。通过本文的介绍,读者可以了解到pandas的基本概念、基础知识、高级特性以及实战案例。在使用pandas进行数据分析时,掌握这些基本概念和操作方法可以大大提高工作效率和数据分析的准确性。同时,结合实际案例,可以帮助读者更好地理解pandas的应用场景和实际效果。总之,pandas是一个非常实用的数据分析库,对于数据分析师、数据科学家等职业人士具有重要意义。

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

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

相关文章

安装Docker并配置镜像加速器、容器

1.安装docker服务&#xff0c;配置镜像加速器 安装软件包 [rootlocalhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 设置yum源 [rootlocalhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo…

ZDRE6VP4-1X/50MG24K4V比例压力阀放大器

DRE 6-11/100MG24K4M比、DRE 10-6X/200YMG24K4M、DRE 20-52/200YMG24K4M、DRE 20-6X/200YMG24K4M、ZDRE6VP1-1X/315MG24N9K4M、ZDRE6VP4-1X/50MG24K4V、Z3DRE6VP2-2X/50G24K4M、Z3DRE6VP1-2X/100G24K4M、Z3DRE10VP2-1X/100XYG24K4M、Z3DRE10VP1-1X/315XLG24K4V 功能: 设定值通…

【实践篇】DDD脚手架及编码规范 | 京东云技术团队

一、背景介绍 我们团队一直在持续推进业务系统的体系化治理工作&#xff0c;在这个过程中我们沉淀了自己的DDD脚手架项目。脚手架项目是体系化治理过程中比较重要的一环&#xff0c;它的作用有两点&#xff1a; &#xff08;1&#xff09;可以对新建的项目进行统一的规范&…

【校招VIP】java语言考点之类的加载过程

考点介绍&#xff1a; 类的加载过程在校招面试中是个高频考点。类只有在要运行的时候才会被加载进JVM,即编译后只有需要到这个类的时候才会把他加载进JVM运行&#xff0c;这种动态加载是依靠反射来实现的&#xff0c;一般来说一个class只会被加载一次...... 『java语言考点之…

oracle 启停操作

1. 监听端口启停 # 根据实际情况 切换至oracle用户 su - oracle# 状态查看 lsnrctl stat# 启动1521端口监听 lsnrctl start# 关闭1521监听 lsnrctl stop 2. 数据库服务启停 # 立即关闭服务 shutdown immediate# 启动服务 startup

前端需要理解的 JavaScript 知识

1 关于JavaScript JavaScript&#xff08;JS&#xff09;是单线程的、基于原型的、弱类型的、动态类型的、轻量的、支持面向对象/命令式/声明式编程的、头等函数的、多范式的、解释性&#xff08;直译式或即时编译&#xff09;的、也可在非浏览器环境下使用的动态脚本语言。Ja…

AI创作助手:介绍 TensorFlow 的基本概念和使用场景

目录 背景 环境测试 入门示例 背景 TensorFlow 是一个强大的开源框架&#xff0c;用于实现深度学习和人工智能模型。它最初由 Google 开发&#xff0c;现在已经成为广泛使用的机器学习框架之一。 TensorFlow 简单来说就是一个用于创建和运行机器学习模型的库。它的核心概念…

安装ssl证书有什么意义?

相信很多网站用户对ssl证书都有一定的了解&#xff0c;它就像是身份证&#xff0c;同时也能保障网站的安全&#xff0c;尤其是一些交易平台&#xff0c;不泄露客户的隐私。为了保证在线客户的隐私信息的安全&#xff0c;中小型企业一定要明白安装ssl证书的重要性。下面JoySSL的…

Nginx实践之使用MaxMind的GeoIP2实现处理不同国家的访问

场景&#xff1a; 因防火墙到期&#xff0c;原网站接入的需要回到公网的解析&#xff0c;经过分析&#xff0c;站点只需要国内访问。于是想到了用地址过滤&#xff0c;目前比较火的是nginx的allow和deny&#xff0c;另外一种是geoip,geoip2 区别&#xff1a; GeoIP用于通过IP获…

ssm班主任助理系统源码和论文

ssm班主任助理系统源码和论文054 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 1、课题背景 由于当今社会科学技术不断发展,科学技术不断发展&#xff0c;21世纪的今天是一个讲究质量和效率的时代&#xff0…

8、Vue 核心技术与实战 智慧商城项目 DAY8~10

1、 项目演示 2、 项目收获 3、 创建项目 4、调整初始化目录 1、删掉&#xff08;1&#xff09;assets中的文件&#xff08;2&#xff09;components中的文件&#xff08;3&#xff09;views中的文件2、(1)修改路由配置&#xff0c;默认的路由是个空数组即可&#xff0c;把路由…

医疗中心疫苗保存,隐藏这招你不知道的技法!

由于疫苗对温度敏感&#xff0c;如果没有在规定温湿度下储存&#xff0c;疫苗的药性很可能发生改变&#xff0c;从疫苗制造的部门到疫苗使用的现场之间的每一个环节&#xff0c;都可能因温度过高而失效。 为了保证从生产、贮存、运输、分发到使用的整个过程中&#xff0c;疫苗始…

销售客户拜访时要获取客户的哪些信息?

俗话说“马无夜草不肥”&#xff0c;信息是销售过程中的关键&#xff0c;谁拿下了信息战谁就占据了市场的制高点。 只有深入了解客户各方面信息&#xff0c;才能有针对性地提供解决方案并达成销售目标。根据我们团队的多年经验&#xff0c;我总结出了两个需要重点考虑的方面&a…

OLED透明屏费用分析报告:尺寸和分辨率对价格的影响

OLED透明屏作为一项创新的显示技术&#xff0c;其透明度和高清晰度的特点使其在各个领域得到了广泛应用。 然而&#xff0c;对于许多人来说&#xff0c;了解OLED透明屏的费用以及其性价比是购买和应用该技术时的重要考虑因素。 本文将通过相关数据和报告&#xff0c;详细介绍…

什么是自助服务知识库?

自助服务知识库是一个自助式客户服务库&#xff0c;其中包含有关产品、服务或主题的内容。通常&#xff0c;它是公司自助服务门户或网站的一部分。 客户每次需要查找产品相关问题的答案、产品使用/故障排除的分步指导或了解有关公司产品的更多信息时&#xff0c;都可以访问知识…

PHP实践:获取网络上图片的长宽以及图片类型

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…

高温老化实验箱选什么软件好

为什么要使用老化监控软件采集数据&#xff0c;老化房老化室软件的十大优点如下&#xff1a; 1. 自动化控制&#xff1a;老化室软件可以实现对老化房的自动化控制&#xff0c;无需人工干预&#xff0c;提高了老化过程的准确性和稳定性。 2. 精确的参数设置&#xff1a;软件可以…

长胜证券:ETF规模持续增长!增量资金加速入市,正“借道埋伏”A股

据了解&#xff0c;ETF是助力普惠金融、服务居民财富办理的重要产品。ETF产品参加门槛较低&#xff0c;且费率较低&#xff0c;便于投资者买卖。ETF产品不断创新&#xff0c;不断满意投资者日益增加的财富办理需求&#xff0c;已成为一般投资者共享我国资本商场开展红利的重要方…

RTSP流媒体服务器EasyNVR安防视频云平台视频流分享到iOS设备上但画面出现拉伸的问题解决方案

EasyNVR是基于RTSP/Onvif协议的视频接入、处理及分发的安防视频云平台&#xff0c;可提供丰富且灵活的视频能力&#xff0c;包括&#xff1a;设备接入、实时视频直播、录像、云存储、录像回放与检索、告警、级联等。平台部署轻快、功能强大&#xff0c;在安防视频监控领域有着广…

【LeetCode75】第三十五题 统计二叉树中好节点的数目

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一棵二叉树&#xff0c;让我们统计这棵二叉树中好节点的数目。 那么什么是好节点&#xff0c;题目中给出定义&#xff0c;从根节点…