Python的Numpy、Pandas和Matplotlib(随笔)

Python--Numpy
import numpy as np

1、扩展程序库(维度数组与矩阵运算、针对数组运算提供大量的数学函数库)

2、N维数组对象对象:ndarray(别名array,用于存放同类型元素的多维数组
,以 0 下标为开始进行集合中元素的索引。

3、属性:
image

4、创建Numpy数组:
使用array()函数,在调用该函数时传入一个列表或者元组。
image

linspace 函数用于创建一个一维数组,数组是一个等差数列构成的
image

logspace 函数用于创建一个对数等比数列
image

zeros()函数创建元素值都是0的数组;通过ones()函数创建元素值都为1的数组。
image

empty()函数创建一个新的数组,该数组只分配了内存空间,它里面填充的元素都是随机的。
image

arange()函数可以创建一个等差数组,它的功能类似于range(),只不过arange()函数返回的结果是数组,而不是列表。根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray
image

有些数组元素的后面会跟着一个小数点,而有些元素后面没有,比如1和1.,产生这种现象,主要是因为元素的数据类型不同所导致的。

5、数据类型:
NumPy的数据类型是由一个类型名和元素位长的数字组成。(例如float64)

常用的数据类型如右表所示:
image

每一个NumPy内置的数据类型都有一个特征码,它能唯一标识一种数据类型。
image

ndarray.dtype可以创建一个表示数据类型的对象,如果希望获取数据类型的名称,则需要访问name属性进行获取。
image

数据类型可以通过astype()方法进行转换。
image

6、数组运算
image

7、ndarray的索引和切片、排序
索引
一维数组
image

多维数组
image

想获取二维数组的单个元素,则需要通过形如“arr[x,y]”的索引来实现,其中x表示行号,y表示列号。

切片
image
image

排序
可以通过sort()方法实现
image

检索
all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False。
image

any()函数用于判断整个数组中的元素至少有一个满足条件就返回True,否则就返回False。
image

8、数组的转置
数组的转置指的是将数组中的每个元素按照一定的规则进行位置变换。
T属性:进行轴对换而已。
transpose()方法:对数组的shape进行调换时,需要以元组的形式传入shape的编号,比如(1,0,2)。
image

只需要转换其中的两个轴,这时可以使用swapaxes()方法实现,该方法需要接受一对轴编号,比如(1,0)。
image

9、统计函数
NumPy 数组中提供了一些简单的统计函数,可以帮助我们计算数组的最大、最小值、平均值、中位数等。

最大、最小值¶
可以使用.max()/.min()或np.amax()/np.amin(),计算数组的最大最小值
a = np.random.randint(low=0,high=99, size=(7,9))
print (a,"\n",a.max(),"\n",a.min())

平均值
可以使用np.mean()/np.average()或.mean()方法获取数组中所有元素的均值
a.mean()

中位数
使用np.median()计算数组的中位数
np.median(a)

标准差
使用np.std计算标准差
np.std(a)

Python--Pandas
import pandas as pd

1、Pandas是基于NumPy数组构建的,也是Python语言的第三方库,Pandas使数据预处理、清洗、分析工作变得更快更简单,主要用于数据分析。专门为处理表格和混杂数据设计的,相当于Python的Excel,而Numpy更适合处理统一的数组数据。

2、对象
series用于保存一维类的数据,DataFrame用于保存二维类的数据,panel(不常用)用于保存三维类或者可变维度的数据。

3、
3.1创建Dataframe对象
pd.DataFrame(data=None, index=None, columns = None, dtype=None)
data: 可以是嵌套列表,二维数组,字典或者DataFrame对象
index: 可以是索引对象或者类数组对象
跟Series一样,index=None时,则会按照默认的0,1,2...顺序建立索引
columns: 可以是索引对象或者类数组对象,其含义是列索引

字典法创建

data = {"grammer":['Python', 'C', 'Java', 'GO', 'css', 'SQL', 'PHP', 'Python'],
"score":[1.0, 2.0, 6.0, 4.0, 5.0, 6.0, 7.0, 10.0]}
df = pd.DataFrame(data)
df

先创建空的,再加入列

df1 = pd.DataFrame()
df1['ID'] = [0,1,2]
df1
In [ ]:
df1['name'] = ['a','b','c']
df1

3.2DataFrame对象常用基本属性
1.查看数据维度、查看数据形状
dataframe.ndim
dataframe.shape

2.查看数据的行名称
dataframe.index

3.查看数据的列名称
dataframe.columns

4.查看数据的前几行:(n为设置查看几行,默认为5行)
dataframe.head(n)

5.查看数据的后几行:(n为设置查看几行,默认为5行)
dataframe.tail(n)
df.iloc[-5:, :]

6.数据转置
dataframe.T
7.查看数据是否存在空值(可以连用,dataframe.isnull().sum()统计列中含有缺失值的个数,
dataframe.isnull().any().sum()统计含有缺失值的列数)
dataframe.isnull()

8.按照行名称或列名称进行排序:(axis参数:指定排序的数轴;ascending:默认按照升序排序;当设置为False时,按照降序排序)
dataframe.sort_index(axis=1, ascending=False)

9.按照数据值排序:(axis参数指定排序的数轴;by参数指定按照哪一列或行进行排序;ascending参数指定是升序还是降序)
dataframe.sort_values(by='列名, ascending=False, axis=0)

10.对数据直接进行统计分析(查看描述性统计分析)
dataframe.describe()

11.打印DataFrame对象的信息
dataframe.info()

12.查看数据类型
dataframe.dtypes

13.根据数据类型选取特征
dataframe.select_dtypes(include=None, exclude=None)

14.查看列数

方法一:

len(df.columns)

方法二:

df.shape[1]

15.查看某一列共有几种类别
df['grammer'].nunique()
查看某一列每个类别的个数
df['grammer'].value_counts()

4、数据的读取与保存
4.1 读取excel文件
pd.read_excel('./data/xxx.xlsx')

括号内为excel文件路径

4.2 读取csv文件¶
pd.read_csv('./xxx/data1.csv')

4.3将DataFrame保存成csv文件¶
df.to_csv('xxx.csv')

Python--Matplotlib(可视化数据)
导入相关包:import matplotlib.pyplot as plt
线图:plot()
体现数据变化趋势
image

散点图:scatter()
体现数据之间的相关性
image

条形图:bar()
体现数据之间的大小
image

饼图:pie()
体现数据占比
image

直方图和密度图:hist()
体现数据的分布趋势(正态分布)
image

多图合并显示:subplot()和subplots() (一张画布多张图)
x:指定x轴数据 y:指定y轴数据
image

linestyle: 指定折线的类型(实线、虚线、点虚线、点点线……),默认文实线
linewidth: 指定折线的宽度
image
image

marker:可以为折线图添加点,该参数设置点的形状
markersize:设置点的大小
markeredgecolor:设置点的边框色
makerfactcolor:设置点的填充色
image
image
image
image

lable:为折线图添加标签,类似于图例的作用
image

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

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

相关文章

财务怎样做到业财融合 - 智慧园区

1. 财务端思维转变 ✅跳出传统账本思维模式:财务人员别只盯着记账、算数据,要多琢磨业务核心逻辑,比如产品提价的原因、项目成本的具体构成。 ✅主动贴近业务全流程:主动参加业务部门的项目会、产品讨论会,把采购…

CF2146E

对于数组 \(a\),定义 \(w(a)\) 为 \(a\) 中满足 \(a_i > mex(a)\) 的下标数。现在给定长度为 \(n\) 的数组,对于每个 \(r\), 求出 \(\max\limits_{l = 1}^{r} w(a[l \sim r])\)。 考虑枚举 \(x = mex(a)\),设 \(…

Gradle使用

Gradle Wrapper distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUr…

Spring Boot项目中集成Spring Security OAuth2和Apache Shiro

1. 引入依赖Spring Boot项目中已经包含了Spring Security依赖、Apache Shiro的依赖。 <!-- Spring Security --><dependency> <groupId>org.springframework.boot</groupId> <artifa…

【博客导航】

文章目录 前言 由于文章内容写的比较杂,其实大部分也是写给自己看的,所以博客的内容也有些杂乱,故在此整理一下,以供想要阅读的朋友方便寻找(还有某些没什么参阅价值的文章就不放上来了)。 博客首页博客首页【ST…

部署向量数据库milvus

系统:CentOS 8.9 部署操作如下 # docker load -i etcd-v3.6.5.tar # docker load -i minio-2023-03-20.tar # docker load -i milvus-v2.3.3.tar # docker load -i attu-v2.3.0.tar # cd /app/ # mkdir milvus_de…

从 0 到 1 实现高性能日志库 MiniSpdlog — 这可能是最适合新手的日志系统实战项目 !

嘿,各位C++er们!我是小康 👋 今天我们来聊一个每个开发者都绕不开的话题——日志记录。 你是不是还在用最原始的 cout 和 printf 调试代码?是不是因为线上程序出问题找不到日志而抓狂?别急,今天我就来给大家盘…

思想惰性:警惕时代中的精神惯性

思想惰性:警惕时代中的精神惯性 思想惰性,并非愚钝,而是一种清醒的妥协,一种在舒适区中滋长的意志松弛。它是心智面对复杂时的退缩,是灵魂回避深度思考的惯性。在信息爆炸的当下,这种惰性被技术包装成各类“权威…

完整教程:S7-200 SMART 开放式用户通信(OUC)深度指南:TCP/ISO-on-TCP(上)

完整教程:S7-200 SMART 开放式用户通信(OUC)深度指南:TCP/ISO-on-TCP(上)2025-10-14 20:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflo…

journalctl 查看服务日志

1. 使用 journalctl 查看完整日志bash# 查看服务的所有日志(从最早开始) sudo journalctl -u system-monitor# 查看完整日志并实时跟踪新日志 sudo journalctl -u system-monitor -f# 查看最近100行日志 sudo journa…

对ssh修改源码过程

一.下源代码(.src.rpm) 1.centos7 https://mirrors.tuna.tsinghua.edu.cn/ 2.rockylinux https://mirrors.zju.edu.cn/rocky/8.10/BaseOS/source/tree/Packages/o/3.下载命令 curl -O https://mirrors.zju.edu.cn/ro…

低代码时代,企业机遇在哪里

一、当 AI “走进” 低代码:一场温柔的开发革命 要是在 2023 年说 “用说话就能搭系统”,可能还会被当成玩笑;但到 2025 年,这已经成了低代码开发的日常。Gartner 有个预测:未来 70% 的企业应用会靠低代码构建,而…

2025 年浙江专升本培训学校推荐榜:浙江/台州/萧山/温州专升本机构,聚焦学历提升需求,杭州泓涵培训学校为学子护航

随着就业市场竞争加剧、专科生学历提升意识持续增强,专升本已成为众多学子拓宽职业发展路径、实现教育进阶的关键选择。尤其在浙江地区,杭州、台州、萧山、富阳、温州、绍兴等地的专升本报考热度逐年攀升,带动本地专…

25noip20d2t2 马戏表演 - Slayer

noip20d2t2 因为笨 写的详细一点。 题意 给定 n,m,对于长为 n 的排列 a,\(cnt_i=\sum_{1\leq l\leq i\leq r\leq n}[\max_{j=l}^r a_j=a_i]\)。求有多少排列 a 满足所有 \(cnt_i\) 都小于等于 m,答案对质数 p 取模。…

完整教程:port trunk pvid vlan vlan-id 概念及题目

完整教程:port trunk pvid vlan vlan-id 概念及题目pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

从后端转行为AI工程师,转行AI大模型开发,附全套学习资源!收藏这份指南! - 实践

从后端转行为AI工程师,转行AI大模型开发,附全套学习资源!收藏这份指南! - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

实验一:现代C++初体验

实验一 源代码 #include <iostream> #include <string> #include <vector> #include <algorithm>template<typename T> void output(const T &c);void test1(); void test2(); void…

2025秋_11

今天学习了Java

软件工程学习日志2025.10.14

🎯 今日任务 在Windows系统上完成MongoDB的安装、服务配置和连接测试。 ⚡ 遇到的问题与解决方案 问题1:PowerShell安全策略限制 错误信息: mongod: The term mongod is not recognized as a name of a cmdlet... …

CF1784E

对 DP 套 DP 的理解又加深了一分。 注意到,当局比分只有 \(0:0,0:1,1:0,1:1\) 四种情况,不妨将其压在一起考虑。 如何判断优劣?相当于从初始比分 \(0:0\),初始下标 \(i=1\) 开始发生 \(s\) 后续的一系列事件。 解决…