
数据分析
文章平均质量分 56
数据分析与计算:matplotlib/numpy/scipy/pandas/。
numpy和scipy相辅相成,一个用于快速矩阵运算一个用于存储稀疏矩阵以及运算,从而可以在大规模的数据上更加有效。而pandas用于读取结构化文件并处理;matplotlib则绘制图像。
音程
这个作者很懒,什么都没留下…
展开
-
(已解决)如何使用matplotlib绘制小提琴图
绘制小提琴图,本人暂时不想学新的东西,就是懒。本文介绍如何使用matplotlib绘制小提琴图,很多其他博客只是使用最简单的语法,默认小提琴颜色会是蓝色,根本改不了。本文使用了一点高级的用法,可以满足基本日常需求。想要更加高级怎么办?原创 2023-12-18 23:07:57 · 1053 阅读 · 0 评论 -
(matplotlib)如何将x轴或者y轴刻度显示到小数点后1位或者后若干位
那如果我们就是为了统一格式,必须小数点后一位呢?这个时候我们要拿出大杀器,一个所见即所得的东西,yticks不是所见即所得,但是参数。这个问题乍一看好像很简单,使用xticks或者yticks不就行了吗,想几位小数就几位小数,例如。可以看到,刻度会完全展示labels里面的东西,labels里面是几位小数,那么刻度就是几位。我问你,画出来的图真的会是一位小数吗?原创 2023-09-14 15:47:52 · 3032 阅读 · 0 评论 -
(matplotlib)如何不显示x轴或y轴刻度(ticks)
可以发现,正常情况下是有刻度的,如果我不想要刻度该怎么办呢?原创 2023-09-14 11:26:27 · 4336 阅读 · 0 评论 -
(matplotlib)如何让各个子图ax大小(宽度和高度)相等
这个东西,好像确实会导致整个子图变形,会和其他3个子图不一样,但是我仍然不知道为什么前面三个子图不是一样宽高。百思不得其解,最后找了好久终于在网上找到了解决办法,但是你要我说为什么上面代码会不相等,我也不知道。下面是源代码,虽然有点长,但是后面3个子图其实都是复制黏贴画第一个子图的代码而已。,这个东西是一个好东西,建议大家学一学,可能可以顺带解决很多其他大小问题。然后往各个子图中填充东西,可以最终得到四个大小不一样的子图,气死了。我用如下subplots代码画一行四个子图,,四个子图大小还是不一样。原创 2023-09-12 22:35:49 · 4349 阅读 · 0 评论 -
pandas中dataframe的一些常用操作
比如参数可以填入字符串“dict",然后就会由dataframe转化为另外一种格式,是一个字典,其中键为column(就是dataframe的那个列名),值为字典{”第1行名“:第1行该列的值,”第2行名“:第2行该列的值,.。比如我们的数据有一列是浮点数,我们要将其变为正数。经过实验,发现没有什么很好的办法可以做到这一点,下面这个凑合着用就行。参数有好多个选项,共有6个。原创 2023-06-05 17:15:38 · 905 阅读 · 0 评论 -
matplotlib如何设置xlabel以及ylabel的位置和大小
设置这两者都差不多,所以我们举一个例子就行,以ylabel为例。我们知道默认情况下,对于ylabel,其总是显示在y轴的中间,这个通常是没有问题的。但是,有的时候,我们的y轴分成了两部分,y轴的上半部分是另外一个图,这个时候,我们将下面这个图的ylabel放在中间就不合适了,应该放低一点。如下:这个好麻烦,暂时没有找到更好的办法,下面这个将就着使用吧。...原创 2022-07-09 16:39:43 · 7001 阅读 · 0 评论 -
matplotlib中两张图如何共用一个x轴,而y轴不一样。
共用一个x轴,而y轴不一样。本文给出两种解决办法,一般情况下,大家指代的可能是第一种。这种办法其实严格来说,并不是共用一个x轴,而是图一使用下面的x轴和左边的y轴,图二使用上面的x轴和右边的y轴。所以,为了将这两个图放在一起,图二的y轴数据需要取负号,这样图二的y轴就会是反的。从而两幅图,图一数据向上增长,图二数据向下增长。这个思路很简单,就是将图1画在y轴的正半轴,图2画在y轴的负半轴。缺点是由于是同一个y轴,从而两者的刻度比例是一样的。从而,如果图1的数据是非常大,图2的数据非常小,那么画出来的图就很原创 2022-07-09 15:15:11 · 3627 阅读 · 2 评论 -
matplotlib绘图润色(如何形成高质量的图,例如设如何置字体等)
本来,如果只是你自己画图然后自己一个人偷着看看,一般是没有这个需求的,直接默认就好了。然而,如果你要把这个图印刷出版,或者放在论文中,或者放在PPT中展示。你会发现,默认的图不太行。比如放在论文中,如果默认的话,里面的字体会特别模糊。分辨率在开头加上下面这句,可以使得你的图片不会模糊。样式样式包括很多方便,字体大小,字体格式等。1.先说一个全局改变的,也就是说开头加上,然后全局有效,很方便。2.然后再局部改变的。参考1.https://blog.csdn.net/weixin_38468077原创 2022-07-03 16:47:04 · 529 阅读 · 0 评论 -
(subplots用法)matplotlib如何绘制多个子图(轴域)
粗略子图的刻度和plt的那个刻度用法不一样。后者是:但是子图的用法是:效果如下:现在我们可以看到,我们上面设置整个绘图区是(10,4),然后默认就是各自一半,那么如何精细控制每一个子图的大小呢?可以看到,一个大,一个小。其实如果你有时间的话,子图(轴域)这个类官方文档中有写,axes其他属性可以见https://matplotlib.org/stable/api/axes_api.html?highlight=axes#module-matplotlib.axes。总之,要有类的思想,a原创 2022-07-02 10:10:14 · 1545 阅读 · 0 评论 -
(完美解决)matplotlib图例(legend)如何自由设置其位置、大小以及样式。
我们知道,这一条代码会帮我们显示图例,而且通常,其会放置在图片中一个不错的位置。但是如果我们的数据,占满了整个图像,此时,其放的位置就会出问题了。那么我们该如何自由设置图例位置呢?这个参数内置了一些位置,如果这些位置恰好有你想要的,那么用这个就行了,很方便。bbox_to_anchor这个是绝招,因为其可以控制任意位置。这个玩意是一个坐标,原点就是图的左下角。但是,这个坐标的数值表示的是比例。比如所以说,很简单了,你自己慢慢调到你想要的位置就行了。注意,上面还支持负数哦。最终,成功调节到了一个中原创 2022-07-01 19:32:10 · 41117 阅读 · 6 评论 -
(已解决)python如何将数组进行排序,如果两个值相等,则顺序并列。
import torchimport numpy as npfrom scipy.stats import rankdataa=torch.tensor([0, 2, 3, 2])b=np.array([0, 2, 3, 2])rankdata(a, method='dense')#tensorrankdata(b, method='dense')#numpy都行array([1, 2, 3, 2], dtype=int32)其他用法如下:参考:https://vimsky.c原创 2022-05-01 09:54:13 · 1628 阅读 · 0 评论 -
快速理解numpy.random.RandomState
文章目录背景疑问背景一开始好奇这个东西是什么,因为我平常产生随机数都是用np.random下面的函数的,例如:np.random.rand(1)#0-1均匀分布产生一个随机数现在突然有一个np.random.RandomState,这让我甚是懵逼。经查阅资料,知道,这个东西是用来得到一个固定随机性的生成器。例如:rand_generator=np.random.RandomState(1)for i in range(3): print(rand_generator.rand(1))原创 2022-04-11 20:03:39 · 1514 阅读 · 0 评论 -
汇总pandas中dataframe的添加操作(包括合并)
文章目录在末尾添加行dataframeseries字典在固定位置后面添加行合并本文所使用的数据如下:import pandas as pddf = pd.DataFrame([['乔峰', '男', 95, '降龙十八掌', '主角'], ['虚竹', '男', 93, '天上六阳掌', '主角'], ['段誉', '男', 92, '六脉神剑', '主角'], ['王语嫣', '女', 95,'熟知武诀', '主角'],原创 2022-03-17 10:19:29 · 5875 阅读 · 0 评论 -
np.asarray和np.array、np.nanmean和np.mean、np.diff、np.ediff1d
文章目录np.asarray()和np.array()np.nanmean()和np.mean()import numpy as npnp.asarray()和np.array()np.array() would create a copy of the object array and not reflect changes to the original array. On the other hand, when you use numpy asarray, it would reflect原创 2022-03-09 19:28:54 · 1003 阅读 · 0 评论 -
详解math.isclose()以及np.allclose()用法
接近这个词具有哲学含义,我们可以分为绝对接近和相对接近。比如规定两个数相差3以内,就是接近。比如规定两个数相差两者绝对值最大值的1%以内,就是接近。稍微解释一下后者,例如有995和1000,两者绝对值最大值是1000,1%=10。因而995和1000是接近的。如果按照前者,995和1000是不接近的。我们发现,各有各的好处,math.isclose()综合了这两个选项:math.isclose(a, b, rel_tol=1e-09, abs_tol=0.0)其中rel_tol就是相对忍原创 2022-03-02 11:38:34 · 4819 阅读 · 2 评论 -
python如何将图片的像素矩阵绘制成图片(python,matplotlib):TypeError: Invalid shape (1, 28, 28) for image data
矩阵变成图片,这个问题使用(python , matplotlib ) 可以轻松实现。import matplotlib.pyplot as plt#使用格式plt.imshow(x)#其中x为图片的像素矩阵。其中的x为:array-like or PIL imageSupported array shapes are:(M, N): an image with scalar data. The values are mapped to colors using normalization原创 2021-12-23 20:33:06 · 13522 阅读 · 1 评论 -
神器np.unique、np.argsort
import numpy as npa = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])执行np.unique():np.unique(a)其执行过程就是,把上面的数组进行拍扁,然后执行去重操作。结果如下:array([0, 1, 2, 3, 4])介绍一个参数,return_inverse=True其作用是标出去重之后的元素(注意不一定是数字,有可能是数组)在处理过后(我们这里是拍扁后,但有的不一定会拍扁)的数组中的位置。a = np原创 2021-12-10 15:06:55 · 1682 阅读 · 0 评论 -
(深入理解)matplotlib的交互模式(block,interactive,ion,ioff,draw,show,plot等的区别)
文章目录交互模式交互模式先理清一个概念,plot和figure,plot更加细节,绘制,比如绘制一条线,绘制标题,这些都是绘制在figure上的;而figure就只有一个,我们所需要做的就是展示它给用户看。那么什么是交互模式呢?import matplotlib.pyplot as pltimport numpy as np先看一段代码:x=np.arange(3)plt.plot(x,x)#默认创建了图片。plt.show()#展示完了之后,清空图片。plt.xlabel("x")#原创 2021-12-04 18:34:16 · 7646 阅读 · 0 评论 -
(深入理解)matplotlib绘图原理(figure,axes,axis,canvas的区别)
matplotlib是受MATLAB的启发构建的,模仿MATLAB但是不模仿“收费”1 一个简单的例子(1) 绘图,画一条直线import matplotlib.pyplot as pltplt.plot([0, 1], [0, 1]) # plot a line from (0, 0) to (1, 1)plt.title("a strait line")plt.xlabel("x value")plt.ylabel("y value")plt.savefig("demo...原创 2021-12-04 10:01:26 · 6297 阅读 · 0 评论 -
matplotlib绘图大全
文章目录前言示例一前言示例一figure=plt.figure(figsize=(20,8),dpi=80)x=list(range(1,len(accuracies)+1))axisx=list(range(1,len(accuracies)+1))plt.plot(x,accuracies)plt.xticks(x,axisx)plt.yticks(accuracies,accuracies)plt.grid(True,linestyle="--",alpha=0.5)plt.tit原创 2021-10-30 18:21:02 · 986 阅读 · 0 评论 -
汇总pandas中dataframe的删除操作
文章目录数据集去重删除某行或某列删除某行删除某列去空数据集去重df.drop_duplicates(["height","weight"])#"height"列和"weight"列相同时就视作两行相同。df.drop_duplicates()#不写默认所有列相同才认为行相同删除某行或某列删除某行df.drop(index = [2,3])删除某列df.drop(columns = ['height','weight'])去空df2=pd.DataFrame([[1,2,原创 2021-10-18 09:55:02 · 1509 阅读 · 0 评论 -
scipy.sparse.coo_matrix、csr_matrix、lil_matrix、dia_matrix
1.coo啥意思?COOrdinate(坐标)2.那么coo_matrix又是一个啥?这么跟你说吧,稀疏矩阵有很多表示的方法,其中coo_matrix是一种,其表示稀疏矩阵所用的方法名字就叫做COOrdinate或者叫做ijv,tripletA sparse matrix in COOrdinate format.Also known as the ‘ijv’ or ‘triplet’ format.首先,我们要明白,矩阵可以看作是一个坐标,每一个坐标上都有一个值。怕你英语不好ijv:(i原创 2021-10-07 11:37:32 · 2306 阅读 · 0 评论 -
(如何从一个列表中随机抽样)np.random.choice(),random.sample()
这个函数非常有用,可以从一个列表中抽样。其一共有4个参数:choice(a, size=None, replace=True, p=None)a :列表或者整数若为整数,则等价于一个列表,因为函数会自动先把整数a变成列表np.arange(a)总之,其实就是一个列表。size : 整数或元组整数表示需要从列表a中抽样多少个元素。元组(m, n, k)表示抽样m * n * k的元素。replace : 布尔值是否为有放回抽样p : 列表对列表a每一个元素赋予被抽取的概原创 2021-09-12 16:08:37 · 6529 阅读 · 0 评论 -
如何打开.npz文件
.npz文件是一个numpy格式的压缩文件,所以由numpy打开。import numpy as npfile_path="D:\Download\\tang.npz"poem=np.load(file_path,allow_pickle=True)poem.files一般上面的输出内容随着不同的.npz文件不同而不同。但是我们总是可以如下处理。ix2word,word2ix,data=poem['ix2word'],poem['word2ix'],poem['data']type(ix原创 2021-07-08 14:47:07 · 39539 阅读 · 3 评论 -
(matplotlib)如何把y轴画在x=0的位置上
import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.axisartist as axisartist########################################创建画布fig = plt.figure(figsize=(20,8))#使用axisartist.Subplot方法创建一个绘图区对象axax = axisartist.Subplot(fig, 111) #将绘图区对象添加原创 2021-04-30 11:17:12 · 2033 阅读 · 0 评论 -
numpy的索引
一开始以为掌握了最基本的索引就够了,但是有的时候发现,业务需要,根本不够用。所以就又来学学。0.准备工作import numpy as np准备索引的矩阵数据如下:y=np.arange(12).reshape((3,4))y1.单个元素索引这个是最简单的,因为无论是c,c++还是java,都允许这样。这也是我之前掌握的唯一一个numpy索引方法,可怜中~。y[0][1]#表示索引矩阵y的0行1列2.行列索引这次我们不是针对一个元素,我们要取出某些行或者某些列来。y[[1,2原创 2021-04-16 19:37:03 · 472 阅读 · 0 评论 -
numpy数组ndarray如何对每个元素取绝对值,然后生成原数组的绝对值数组
取绝对值,使用np.maximum()而不是np.max()。import numpy as npx=np.array([[1,-2],[-1,0]])print(x)abs=np.maximum(x,-x)abs结果如下:原创 2021-04-02 11:14:22 · 11551 阅读 · 0 评论 -
利用numpy对已知样本点进行多项式拟合
0.导入相关包:import matplotlib.pyplot as pltimport numpy as np1.假设有如下样本点:#使用随机数产生样本点x=[1,2,3,4,5,6,7,8,9,10]y=[2,-25,16,3,35,6,91,-39,20,0]print("样本点横坐标为:")print(x)print("样本点纵坐标为:")print(y)绘制成散点图就是这样:2.我们利用numpy来拟合这些样本点,本文中我们将函数拟合成多项式函数。(核心步骤)#原创 2021-03-19 14:41:19 · 825 阅读 · 0 评论 -
如何使用matplotlib绘制表格-plt.table()
1.准备好数据import matplotlib.pyplot as pltimport numpy as np#列名col=[]for i in range(1,8): col.append("Day"+str(i))#行名row=[]for i in range(1,13): row.append(i)#表格里面的具体值vals=np.random.rand(12,7)列名(星期几)行名2.绘制表格plt.figure(figsize=(20,8))t原创 2021-03-12 21:50:06 · 23659 阅读 · 0 评论 -
汇总pandas中的dataframe的索引操作
iloc索引先建立好如下数据:import pandas as pddf = pd.DataFrame([['乔峰', '男', 95, '降龙十八掌', '主角'], ['虚竹', '男', 93, '天上六阳掌', '主角'], ['段誉', '男', 92, '六脉神剑', '主角'], ['王语嫣', '女', 95,'熟知武诀', '主角'], ['包不同', '男', 65, '胡搅蛮缠', '配角'],原创 2021-01-23 22:56:47 · 1391 阅读 · 0 评论 -
numpy.logspace()产生一个数组
看到这个函数,一开始以为很神奇,其实不然。x=np.logspace(-2, 10, 13)x输出:上面的结果,我也楞了一会,因为上面的结果中数字写得不规划,我以为eee是自然底数,而且1.e得写法就更懵逼了。其实,那第一个来说,其实$1*...原创 2021-01-08 10:48:47 · 1854 阅读 · 0 评论 -
numpy中使用对数函数的方法
先介绍一个numpy中的常量eee,即自然底数。import numpy as npnp.e结果:然后我们开始使用对数函数np.log()。要注意的是,这个对数函数是以eee为底的对数函数,即这是一个自然对数运算。The natural logarithm log is the inverse of the exponential function,so that log(exp(x)) = x. The natural logarithm is logarithm in basee.原创 2021-01-07 22:16:22 · 38130 阅读 · 1 评论 -
pandas中dataframe的构造(csv等结构化文件读取,字典读取)以及保存
数据1是这样的。1.58 2.32 -5.8 00.67 1.58 -4.78 01.04 1.01 -3.63 0-1.49 2.18 -3.39 0-0.41 1.21 -4.73 01.39 3.16 2.87 01.20 1.40 -1.89 0-0.92 1.44 -3.22 00.45 1.33 -4.38 0-0.76 0.84 -1.96 00.21 0.03 -2.21 10.37 0.28 -1.8 10.18 1.22 0.16 1-0.24 0.93 -1原创 2020-12-12 20:47:27 · 1992 阅读 · 0 评论 -
numpy如何生成随机数
有的时候,我们需要对一个矩阵进行初始化,比如在做神经网络的时候,权值参数的初始化是很重要的。假设下面都是要初始化一个3行4列的矩阵,即shape=(3,4)。生成一个全为0的矩阵。print(np.zeros((3,4)))生成一个全为1的矩阵。print(np.zeros((3,4)))使用随机数。导入包。print(np.random.rand(3,4))你也应该猜到了,这个生成的是【0,1)之间的随机数,里面的数都是等概率的抽取,即均匀分布。Create an arr原创 2020-12-09 21:48:07 · 1854 阅读 · 0 评论 -
使用python中的库matplotlib绘制箱线图(boxplot)
假设有如下数据:import pandas as pdimport matplotlib.pyplot as pltimport numpy as npdata=pd.read_csv("agebodyfat.csv")我们要分别绘制出age这列数据的箱线图和%fat这列数据的箱线图。一、如何绘制箱线图1.计算出这份数据的Q1,Q2,Q3。其中Q1为下四分位数,Q2为中位数,Q3为上四分位数。(解释一下什么是四分位数,就是把数据从小到大排序之后,可以把这份数据平均分成四份,其中第一份数据原创 2020-10-07 11:46:38 · 3502 阅读 · 0 评论 -
源数据文件(.csv)中的空格串和空串对pandas读取结果的影响
1.如果源文件数据是这样的(空串):h,e,l,o,p-0.55886165,-0.3270258,,0.51051328,0.72930379那么pandas读取之后是这样的:2.如果源文件数据是这样(空格串)注意那两个逗号分隔符中我按了个空格,上面那个是两个逗号连着打,中间没空格):h,e,l,o,p-0.55886165,-0.3270258, ,0.51051328,0.72930379那么pandas读取之后是这样的:所以如果看到pandas的读取结果有空白,其实是你自己原创 2020-10-01 21:17:52 · 1611 阅读 · 0 评论