Python中的Pandas、Matplotlib库详解

2023-05-16

文章目录

  • Pandas数据分析库
    • Pandas的基本数据结构
    • 访问数据
    • 算术运算和对齐
    • 数据整理
  • Matplotlib绘图库
    • Matplotlib简介
    • 几种常见的图形
    • 多图绘制
    • 使用Pandas绘图

Pandas数据分析库

1)Pandas是目前Python生态圈最常用的数据分析工具库。该库以Numpy为基础,增加了标签支持,整合了对数据集的读取、清洗、转换、分析、统计、绘图等一系列工作流程,能够高效地处理和分析结构化数据。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。Pandas适合处理数值和字符串混杂数据,numpy适合处理统一的数值数据。

2)引入pandas的惯例

import  numpy  as  np
import  pandas  as  pd
from   pandas  import  DataFrame,  Series

Pandas的基本数据结构

1.序列(Series)

Pandas提供了三种基本数据结构

  • Series:带标签的一维数组
  • DataFrame:带标签的二维数组(即表格)
  • Panel:带标签的三维数组(若干表格的叠加面板)

主要使用SeriesDataFrame。与NumPy数组相比,Pandas最重要的改进是增加了标签(也称轴索引),可以实现自动的按索引对齐运算

范例:

import  pandas as pd
from   pandas  import  DataFrame,  Series
pd.__version__   	# 版本号 0.25.1

s1=Series([10,20,30]) 	# 创建Series,默认整数索引0~2
s2=Series([10,20,30], index=['a','b','c']) # 创建并指定索引

s2['a']  	#  按标签访问,10
s2[0]	# 按整数下标访问,10
s2['a':'c']   # 标签切片,3个数据
s2[0:2]  # 按整数索引切片,2个数据

# 求和,均值,中位数
s2.sum(), s2.mean(), s2.median()

s2['a']=100  # 修改'a'标签对应的值
s2['d']=200 # 通过赋值创建新标签

2.标签自动对齐运算

s1 = Series([1, 2, 3], index=list('axb')) 	
s2 = Series({'a':10, 'b':20, 'c':30})	
s1 + s2

Series具有标签,运算时自动对齐标签进行计算,这是Pandas相比NumPy的重要改进。s1的标签为['a','x','b'], s2的标签为['a','b','c'],执行s1 + s2 时,两者都有的’a’、‘b’标签自动对齐,对应的数值相加;两者互不匹配的’c’、'x’标签相加后的值为NaN。NaN(not a number)是Pandas中表示非数值或缺失值的符号。

3.数据框(DataFrame)

DataFrame(数据框)是Pandas最重要的数据结构。数据框可视为由行和列构成的二维表格,每行或每列都可视为一个Series。DataFrame既有行索引(index)又有列索引(columns)。

范例:

data = {'apple': [1100,1050,1200], 'huawei': [1250,1300,1328], 'oppo': [800,850,750]} 
df = DataFrame(data, index=['一月',  '二月',  '三月']) 	# index行标签
df['apple']   		# 访问一列
df.loc['一月']  		# 访问一行,不能写为df['一月']
df.loc['一月', 'apple'] 	# [行标签,列标签] 1100

访问数据

1.数据框有多种灵活的访问形式。

df = DataFrame(np.arange(12).reshape(3,4), index=['a','b','c'], columns=['c1','c2', 'c3','c4'])
df.info()  	# 显示列名及数据类型
df.head(2) 	# 显示头两行
df.tail(2)    	# 显示末尾两行

2.loc[ ]、iloc[ ]访问

1)按列访问
访问列数据时使用object['列名']object.列名的形式。

df['c1'] 	# 访问c1列,也可写为df.c1

2)按列访问

df[ ['c1', 'c3'] ]  		# 访问c1, c3两列,注意多个列名要放入[ ]
df[df.c1 > 3]        	# 按条件访问,只显示c1列>3的行
df[(df.c1 > 3) & (df.c2 > 5)] 	# 按条件访问,c1列>3且c2列>5

Tips:[ ]内的逻辑运算符要使用 &(与)、|(或)、~(非),不能使用Python的and、or、not运算符。[ ]内的逻辑表达式要用小括号括起来,如上例中的(df.c1>3)&(df.c2>5)

3)loc[]基于标签而iloc[]基于整数下标,所以不能出现loc[1]iloc['a']这样的写法。另外,loc['a':'c']将包含结尾的’c’标签,而iloc[0:2]不包含结尾的第2行。

算术运算和对齐

Pandas支持标签访问数据,运算时会自动基于标签对齐进行计算。运算数据若是Series则只有行标签,若是DataFrame则会在行、列两个方向上对齐标签再计算,标签不匹配的数据元素默认标记为NaN值。

范例:

df = pd.DataFrame(np.arange(9).reshape(3, 3), index=list('abc'), 	columns=list('xyz'))
s = pd.Series([1, 2, 3], index=list('xyz'))
df + s

Pandas基于NumPy,所以NumPy的通用函数都可以在Pandas中使用。

数据整理

1.行的插入/删除

# 字典参数, 在末尾插入新行,注意ignore_index=True
df = df.append({'姓名':'d','学号':'A4','成绩1':89,'成绩2':78}, ignore_index=True)

DataFrame的很多命令并不直接改变原数据框,而是返回新数据框,这和列表的处理方式不同。要直接修改原数据框,可将命令写为df=df.append() 的形式。

删除行使用drop()方法。
df.drop(2, inplace=True)     # 按索引删除第2行, inplace= True表示就地修改原数据框

2.列的插入/删除

创建新列最简单的方法是直接给一个新列赋值,新列默认插在最后。要注意提供的数据个数应等于数据框的行数。

df['性别'] = ['M', 'F']      # 增加"性别"列,给新列赋值即可插入列

Matplotlib绘图库

1)概述:数据可视化是指以图形的方式展示数据。

Matplotlib简介

1)图形输出分为嵌入模式和独立窗口模式两种。嵌入模式在IPython的交互窗口中显示图形,图形显示后不能再修改。独立窗口模式在弹出的一个窗口中显示图形,图形可以放大、缩小和修改。

In: %matplotlib  inline         # 设置嵌入模式,左下图
In: %matplotlib             	# 设置独立窗口模式,右下图

2)范例:绘制 y = x^2 曲线

import  numpy  as  np
import  matplotlib.pyplot as plt 		# 导入plt
x = np.linspace(-2, 2, 50)             		# 在区间[-2, 2]内等间距产生50个点
y = x**2                     			# 计算平方值
plt.plot(x,y)

plt.plot(x,y,color='blue',ls='--',label='y=x^2') # 绘曲线并设定蓝色、破折线、图例
plt.xlabel('x', fontsize=14)        		# x轴标记字符x
plt.ylabel('y', fontsize=14)        		# y轴标记字符y
plt.title('Example', fontsize=18)  		# 设置标题
plt.legend()                       			# 显示图例(y=x^2)
plt.show()                # 显示图形(该句可省略)

3)颜色、线型和标记符号

作图时需要指定线条的颜色、线型、标记符号等参数,语句格式如下。

plt.plot( x,  y,  ls='线型', color='颜色', marker='标记', lw=线宽)
linestyle参数表描述
-实线
破折线
-.点划线
:虚线
‘None’空白(不画线)
颜色名称描述
r红色
k黑色
b蓝色
c青色
y黄色
w白色
g绿色
标记描述
o圆圈
.
D菱形
+加号
v一角朝下的三角形
>一角朝右的三角形
None空白
s正方形
*星号
d小菱形
xX号
<一角朝左的三角形
^一角朝上的三角形

几种常见的图形

命令名图形类型
plt.plot()折线图
plt.pie()饼图
plt.hist()直方图
plt.boxplot()箱线图
plt.bar()柱形图
plt.barh水平条形图
plt.scatter()散点图

多图绘制

1)可以在一张图上同时显示多个子图形以便进行比较研究。绘制多子图可借助 figure 画布对象,这个对象用于创建子图。

范例:

x = np.arange(1,100)
fig = plt.figure()            		# 创建一个figure对象
ax1 = fig.add_subplot(2,2,1)    	# 2行x 2列图形的第一个子图
ax1.plot(x, x)
ax2 = fig.add_subplot(2,2,2)    	# 2行x 2列图形的第二个子图
ax2.plot(x, -x)
ax3 = fig.add_subplot(2, 2, 3)  	# 2行x 2列图形的第三个子图
ax3.plot(x, x**2)
ax4 = fig.add_subplot(2, 2, 4)  	# 2行x 2列图形的第四个子图
ax4.plot(x, np.log(x))

使用Pandas绘图

1)df.plot(kind='bar', rot=0)语句指定做一个柱形图。pandas自动以每行为一组数据,每组数据中含3个列数据, 结果绘制出4组柱形对比图。列索引名"ABC"成为图例,行索引"一二三四"成为X轴上的标记。rot=0指定标记文字旋转角度为0,如不设定旋转角度值,文字默认会旋转90度。

2)kind='类型'参数用于指定作图的类型,常用的类型有line(折线图)、bar(柱形图)、barh(水平条形图)、pie(饼图)、kde(密度图)、hist(直方图)等。如不指定类型则默认为折线图。

范例:

df.A.plot(kind='pie', title='A列数据', fontsize=16) # 以A列数据做饼图
df.plot(kind='bar', stacked=True, rot=20)   # stacked=True堆积柱形图
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中的Pandas、Matplotlib库详解 的相关文章

随机推荐

  • python 让print函数输出在console的结果直接被下一个print函数输出的结果覆盖

    可以用于进度的展示 xff0c 不用输出很多内容 xff0c 占用console空间 span class token keyword from span sys span class token keyword import span s
  • python并行运算

    并行运算 Python有多种方法可以进行并行计算 xff0c 以下是其中几种常见的方法 xff1a 多进程 xff1a Python中的multiprocessing模块提供了多进程的支持 xff0c 可以使用Process类来创建新进程
  • python的格式str.format

    下面是一些常用的格式化规则 对齐规则 使用 lt 或 gt 分别表示左对齐 居中对齐和右对齐 宽度规则 使用一个整数表示输出结果的宽度 精度规则 使用 加一个整数表示浮点数的小数点后的位数 类型规则 使用一个字符来指定输出结果的类型 常用的
  • apt 和 apt-get 区别

    文章目录 1 apt 的由来2 apt 和 apt get 的区别3 应该使用 apt 还是 apt get xff1f 1 apt 的由来 Ubuntu Linux Mint和elementary OS 等发行版的 Linux 均是基于D
  • 你是我的眼:水哥王昱珩带你重新打量这世界

    水哥 王昱珩在 最强大脑 舞台上凭借着 微观辨水 一战成名 在节目中 xff0c 他以1秒四杯的速度从520杯同质同量同水源的水中 xff0c 迅速找出了之前被随机选中的那杯 xff0c 甚至看出了这杯水从被选中拿起观察再到放回原位 xff
  • 性能优化与内存优化

    性能优化 主要以这四个方向进行优化 xff1a 稳定流畅耗损apk 瘦身 稳定 避免内存溢出异常捕获反馈机制 流畅 卡顿的原因 xff1a 布局复杂动画过多View 的过度绘制UI 耗时操作频繁 GC 耗损 减少没必要的网络访问或合并相关网
  • (2)工作空间

    工作空间 特点创建工作空间编译添加环境变量 特点 1 工作空间的主要作用是存放工程文件和文件代码 xff08 存放工作空间和代码的一个文件夹 xff09 2 ROS的开发依赖于工作空间 3 编写源代码 编译都是在工作空间下完成的 4 一般工
  • 工程伦理 清华大学 MOOC 期末答案 2020冬

    前言 xff1a 答案是本人自己查阅 不保证其完全正确性 xff0c 仅供参考 点个赞再走呗 xff1a xff09 1 单选题 1分 以下不属于安全文化的核心的是 D A 人的安全知识 B 人的安全意识 C 人的安全技能 D 人的安全装备
  • HTML移动端的基本了解

    文章目录 前言 一 PC端与移动端的区别 PC端 xff1a 移动端 xff1a 二 视口 布局视口 视觉视口 理想视口 meta视口标签 三 二倍图 四 移动端开发选择 单独制作移动端页面 主流 响应式页面兼容移动端 其次 总结 前言 分
  • 树莓派4B(armv7l,arm32)buster部署英特尔第二代神经计算棒,示例:运行darknet-yolov4-tiny

    记录整个部署的步骤 英特尔第二代神经计算棒 xff08 Intel NCS2 xff09 的使用需要到OpenVINO官网下载安装某一个版本的软件 xff0c 目前是支持Windows Linux和树莓派的Raspbian OS 下面贴出来
  • 树莓派结合英特尔神经计算棒二代(NCS2)的openvino包部署人工智能应用

    利用树莓派和英特尔神经计算棒二代 xff08 NCS2 xff09 进行边缘端AI硬件平台部署三部曲 xff1a 二 xff09 树莓派4B和NCS2配置时cmake编译报错以及import error can t find moudle
  • 树莓派报错“Cannot currently show the desktop”的完美解决办法

    最近在利用树莓派部署神经网络的时候出现了一些大大小小的问题 xff0c 很多问题都可以在网上直接或间接地找到答案 xff0c 但有个别问题即使按照网上的高赞博客说的去做了仍然没用 笔者根据最近遇到的有关树莓派VNC win10远程桌面连接
  • Nvidia Jetson XAvier NX开发套件从装机到pytorch环境搭建YoloV5+DeepSort+TensorRT

    目录 1 刷机与装机1 1 准备VMware工作站和linux的unbuntu16 04虚拟机 xff1a 1 2 将SD上的系统移动至SSD1 3 SSH配置1 4 查看Jetpack版本1 5 启动风扇 2 深度学习环境配置2 1 py
  • Python+OpenCV+matplotlib+wxPython实现的图像处理程序

    Python 43 OpenCV 43 matplotlib 43 wxPython实现的图像处理程序 背景 xff1a 本学期多媒体技术原理与应用课程的实验部分代码结果截图结语 背景 xff1a 本学期多媒体技术原理与应用课程的实验 本学
  • 按量购买阿里云服务器、k8s集群

    基础配置 创建私有网络 注意这里的交换区必须和服务器的所选区相同 连接测试 ping a 172 31 0 141 172 31 0 143 172 31 0 142 ping一下私有网络 ping 172 32 0 141 设置弹性ip
  • 小米6渲染图曝光 边框惊艳 国产曲面旗舰要发黑色版

    昨天咱们刚刚说过 小米6会有陶瓷版本 并且估计会在四月发布 今天 网友的渲染图又来了 没上车的赶紧上车 别忘了底部打卡 最近 对于小米6的传言很众多 xff0c 但不管怎么说 xff0c 骁龙835处理器 IMX400传感器以及高屏占比等都
  • 时间戳对齐的简单算法(原创)

    实际融合算法过程中常常出现时间戳对不齐的情况 为了解决此问题 xff0c 用了两个队列来解决时间戳匹配问题 时间戳对齐算法实现原理如下下图为插入状态 如图所示共有两个队列 xff0c 有七个状态 xff0c 通过对于轮速递推结果的动态保存
  • java中equals和==的区别(简单介绍)

    java中equals和 61 61 的区别 简单介绍 equals方法是java lang Object类的方法 有两种用法说明 一 对于字符串变量来说 xff0c 使用 61 61 和 equals 方法比较字符串时 xff0c 其比较
  • 如何上传到GitHub的main分支而不是master分支

    由于在2020年10月01日后 xff0c 在 GitHub 上创建的仓库都默认命名为 main 而非原本的 master 所以 有人看了我的 https blog csdn net m0 46419510 article details
  • Python中的Pandas、Matplotlib库详解

    文章目录 Pandas数据分析库Pandas的基本数据结构访问数据算术运算和对齐数据整理 Matplotlib绘图库Matplotlib简介几种常见的图形多图绘制使用Pandas绘图 Pandas数据分析库 1 xff09 Pandas是目