margins命令(margin)

admin 407 0

大家好,今天来为大家解答margins命令这个问题的一些问题点,包括margin也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

一、python(pandas模块)

pandas模块更擅长处理二维数据,主要有series和dataframe两种数据结构。

series创建一维数组,不仅包含数值,还包含一组索引。

dataframe通过列表、字典或二维数组创建,包含行索引和列索引。

在此主要记录DataFrame的使用,包括:

-通过NumPy模块创建的二维数组创建DataFrame

a=pd.DataFrame([[1,2], [3,4]])#用二维列表创建2行2列的二维数组

还可以在创建时自定义行索引和列索引。

a=pd.DataFrame([[1,2], [3,4]],columns=['data','score'],index=['a','b'])# columns指定列索引,index指定行索引。

a=pd.DataFrame({'a': [1,3,5],'b': [2,4,6]}, index=['x','y','z'])#创建a,b列,xyz行的二维数组

如果想以字典的键名作为行索引,可以用from_dict()函数将字典转换成DataFrame,同时设置参数orient的值为‘index’

c=pd.DataFrame.from_dict({'a': [1,3,5],'b': [2,4,6]}, orient='index')

(3)通过NumPy模块创建的二维数组创建DataFrame

a= np.arange(12).reshape(3, 4)

b= pd.DataFrame(a, index=[1,2,3], columns=['a','b','c','d'])

rename()函数会用新索引创建一个新的DataFrame,不会改变原值。通过设置参数inplace为True来修改原值

a.rename(index={'a':'万科','b':'阿里','c':'百度'}, inplace=True)#更改行索引名称

a.rename(columns={'1':'分数','2':'排名'}, inplace=True)#更改列索引名称

a=a.reset_index()#设置参数inplace=True,可以一步到位的修改

a=a.set_index['id',inplace=True]#将id列设为索引列

(2)df.info()#数据表基本信息(维度、列名称、数据格式、所占空间等)

(3)df.dtypes#每一列数据的格式

df['A1'].dtype#某一列数据的格式

(4)df.isnull()#查看所有列是否为空值

df['A1'].isnull()#查看某一列是否为空值

(5)df['A1'].unique#查看某一列的唯一值

注:带.values输出的是np数组。不带.values则输出的是DataFrame类型**

df.columns.values#查看列名称,并输出值(输出的是一个np数组)。

df.index.values#查看列名称,并输出值(输出的是一个np数组)。当进行循环遍历时,两者一样。

(10)print(data.describe())#描述性统计

data=pd.read_excel('data.xlsx')#需要安装openpyxl模块

df= pd.read_excel(r"/Users/andy/Downloads/books.xlsx", skiprows=3, usecols="C:F", index_col=None, sheet_name= 0, dtype={"ID":str,"InStore":str)

#文件的路径使用"r",主要是为了避免路径出错

#skiprows表示忽略前面XX行.例如上面的例子,读取的时候直接忽略了前面3行

#usecols表示读取哪几列,可以使用列表的方式表示要导入哪几列,例如usecols= [0,2]

#sheet_name用于指定读取哪个工作表

#index_col表示使用哪一列作为索引

#header=0,可以使用header表示使用哪一行作为列索引

#dtype使用字典,更改对应的Series的数据类型.一般转化成str,便于后期的运算或修改

df= pd.read_excel("/Users/andy/Downloads/books.xlsx", skiprows=3, usecols="C:F", index_col=None, sheet_name= 0, dtype={"ID":str,"InStore":str})

df["InStore"].at[i]="YES" if i% 2== 0 else"NO"

df["ID"]= df["ID"].astype("str").str.zfill(3)

#在上面的例子中, ID这一列我使用了zfill()这个方法,它会自动的让字符前面自动添加0.这里要注意的是,只能为字符串添加zfill(),所以我这里进行了数据类型的转化.

#读取文件的时候,使用了dtype参数,主要是为了将对应的列转化为字符串,便于我们进行填充排序

#skiprows表示忽略哪几行, usecols表示要导入哪些列,可以使用列表的方式导入指定的列,例如usecols= [0,3],也可以按上面的方法

data=pd.read_csv('data.csv', delimiter=',', encoding='utf-8')

#delimiter指定csv文件的数据分隔符;encoding指定文件的编码方式;index_col用于设置索引

#注意:读取excle时不能指定编码encoding,读取csv文件时可以指定

data.to_excel('data.xlsx', sheet_name=0, columns=['A列'], index=False)

sheet_name指定工作表的名成; index指定是否写入行索引信息;columns指定要写入的列;encoding指定编码方式。

**使用切片操作时,遵循左闭右开规则。先行后列,中间用逗号(,)分隔。**

data.loc[['r2','r3']]#根据行的名称来选取。列表中嵌套一个行列表。

data.head()#用head函数选取前几行

a=data.iloc[0:2][['r1','r3' ]]

a=data.iloc[0:2, [0,2]]#读取0-1行,0和2列。loc方法使用字符串作为索引,iloc方法使用数字作为索引;

a=data.iloc[0:44, 0:5]#读取0-44行,0-5列。第0行0列为索引行和索引列

a=data.iloc[0:5, 11:12]#读取第0-5行,第12列(索引号为11)。

a=data.iloc[[0,2],[0,2]]#按位置单独提取数据

读取指定不连续的多行多列,需要在列表中嵌套列表

(3)使用ix按索引标签和位置混合提取数据

df_inner.ix[:'2018-01-03',:4]#将日期设为行索引,提取2018/1/3以前,前4列的数据

a= data[data['c1']>1]# c1列大于1的行。多个筛选条件,用”&“(表示’且‘)或”|“(表示’或‘)连接。

data[data['c1'].str[-1].values=='年']|data['c1'].str[-1]=='月']#按照c1列字符串最后一个字是年或月筛选

df.loc[(df['age']>20)&(df_inner['city']=='beijing'),['id','gender']]#行筛选,提取id、gender列

a=data.sort_values(by='c2', ascending=False)# by指定按哪一列排序;ascending(“上升”的意思)默认为True,升序;False表示降序

a=a.sort_index()#按索引列排序

data.sort_index(axis=0,ascending=False)#降序排列行索引

data.sort_index(axis=1,ascending=False)#降序排列列索引

通过数据运算可以基于已有的列生成新的一列

data['c4']=data['c3']-data['c1']

df.loc[(df_inner['city']=='beijing')].city.count()#对筛选后的数据按city列进行计数

df[(df['city']=='beijing')].price.sum()#对筛选后的结果按price进行求和

df['city'].isin(['beijing'])#判断city列是否为beijing

df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]#判断city列里是否包含beijing和shanghai,然后将符合条件的数据提取出来

scores["ID"][1]="1006"#数据的修改

df.ix[['ID']=='shanghai','Scores']='90'#数据的修改。先选取,后赋值。

df['city'].replace('shagnhai','sh')#数据替换

scores["df1"]= scores["Scores"]//10#添加一列df1,数据为Scores列除以10的商整数

scores["df2"]= scores["Scores"]>85#添加一列df2,数据为True或False

df['group']=np.where(df_inner['price']>3000,'high','low')#添加一列,根据‘price’列的值来填

注:增加行列还可以使用数据的拼接函数

pop()和drop()函数可以删除DataFrame中的指定数据。

drop([],axis=0,inplace)#axis=0指定删除行,axis=1指定删除列;index指定要删除的行;columns指定要删除的列;inplace默认为False,表示删除操作不改变原DataFrame。

df.drop([0,1,3,6])#删除指定行,第1,2,4,7行的数据

df.drop(['A1','D1'], axis=1)#删除指定列。

不论是删除行还是删除列,都可以通过drop方法实现,只需要设定好删除的轴即可,即调整drop方法中的axis参数。默认该参数为0,表示删除行观测,如果需要删除列变量,则需设置为1。

对于缺失值的存在可能会影响到后期的数据分析或挖掘工作,那么我们该如何处理这些缺失值呢?常用的有三大类方法,即删除法、填补法和插值法。

删除法:当数据中的某个变量大部分值都是缺失值,可以考虑删除改变量;当缺失值是随机分布的,且缺失的数量并不是很多是,也可以删除这些缺失的观测。

替补法:对于连续型变量,如果变量的分布近似或就是正态分布的话,可以用均值替代那些缺失值;如果变量是有偏的,可以使用中位数来代替那些缺失值;对于离散型变量,我们一般用众数去替换那些存在缺失的观测。

插补法:插补法是基于蒙特卡洛模拟法,结合线性模型、广义线性模型、决策树等方法计算出来的预测值替换缺失值。

df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)#删除缺失值

how:{'any','all'}

any: if any NA values are present, drop that label

all: if all values are NA, drop that label

df['A1'].drop_duplicates()#删除后出现的重复值

df['A1'].drop_duplicates(keep='last')#删除先出现的重复值,保留后出现的

通过del命令实现,该命令可以删除Python的所有对象。

df.fillna(values=0)#用数字0填充空值

df['A'].fillna(df['A1'].mean())#用A1列的均值填充空值

df.fillna(method='ffill')#采用前项填

df.fillna(method='bfill')#采用后项填充

(9)df['A1'].map(str.strip)#对某一列数据中的字符串进行strip处理

(10)df['A1'].str.lower()#对某一列数据中的字符串进行大小写转换

(11)df['A1'].astype('float')#对某一列数据中的数据进行数据类型转换

(12)df.loc[(df['city']=='beijing')&(df['price']>100),'sign']=1#对复合多个条件的数据进行分组标记

(13)split=pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])#对category字段的值依次进行**分列**,并创建新的DataFrame数据表,索引值为df_inner的索引列,列名称为category和size

(14)pd.DataFrame(category.str[:3])#提取前三个字符,并生成数据表

df["height"].**apply**(multiply)

根据一个或多个同名的列将不同数据表中的行连接起来。

df3= pd.merge(df1,df2, on='公司', how='outer')

on指定按照哪一同名列进行合并;how=outer指取并集连接。how=left指保留左表全部内容,而对右表不太在意;how=right指保留右表全部内容,而对左表不太在意;

df3= pd.merge(df1,df2,left_index=True, right_index=True)#按照行索引进行合并

使用全连接方式完成拼接,不需要对齐,而是直接进行合并。用参数axis指定连接的轴向,默认为0,即按行方向连接(纵向拼接)

df3= pd.concat([df1, df2], axis=0, ignore_index=True)#忽略原有索引,生成新的数字序列作为索引。

另一个用途是新增元素。新增元素时,一定要设置参数ignore_index=True来忽略原索引,否则会报错。

df3= df1.append({'公司':'腾飞','分数':'90'}, ignore_index=True)

pandas模块为我们提供了非常多的描述性统计分析的指标函数,如总和、均值、最小值、最大值等,我们来具体看看这些函数:

d1= pd.Series(2*np.random.normal(size= 100)+3)

d2= np.random.f(2,4,size= 100)

d3= np.random.randint(1,100,size= 100)

d1.idxmin()#最小值的位置,类似于R中的which.min函数

d1.idxmax()#最大值的位置,类似于R中的which.max函数

d1.describe()#一次性输出多个描述性统计指标

必须注意的是,descirbe方法只能针对序列或数据框,一维数组是没有这个方法的

这里自定义一个函数,将这些统计描述指标全部汇总到一起:

return pd.Series([x.count(),x.min(),x.idxmin(),

index= ['Count','Min','Whicn_Min','Q1',

'Median','Q3','Mean',

'Max','Which_Max','Mad',

'Var','Std','Skew','Kurt'])

在实际的工作中,我们可能需要处理的是一系列的数值型数据框,如何将这个函数应用到数据框中的每一列呢?可以使用apply函数。

将之前创建的d1,d2,d3数据构建数据框:

df= pd.DataFrame(np.array([d1,d2,d3]).T,columns=['x1','x2','x3'])

非常完美,就这样很简单的创建了数值型数据的统计性描述。如果是离散型数据呢?就不能用这个统计口径了,我们需要统计离散变量的观测数、唯一值个数、众数水平及个数。你只需要使用describe方法就可以实现这样的统计了。

student['Sex'].describe()

除以上的简单描述性统计之外,还提供了连续变量的相关系数(corr)和协方差矩阵(cov)的求解,这个跟R语言是一致的用法。

关于相关系数的计算可以调用pearson方法或kendell方法或spearman方法,默认使用pearson方法。

如果只想关注某一个变量与其余变量的相关系数的话,可以使用corrwith,如下方只关心x1与其余变量的相关系数:

df.corrwith(df['x1'])

主要函数是groupby和pivote_table。

聚合:pandas模块中可以通过groupby()函数实现数据的聚合操作

df_inner.groupby('city').count()#根据city分组,对其它列进行统计

student.groupby('Sex').mean()#根据性别分组,对其它列求平均值

df_inner.groupby('city')['id'].count()

(3)groupby还可以使用多个分组变量,例如对两个字段进行汇总计数

df_inner.groupby(['city','size'])['id'].count()

student.groupby(['Age','Sex']).mean()#根据年龄、性别分组,对其它列求平均值

(4)对city字段进行汇总,并分别计算price的合计和均值

df_inner.groupby('city')['price'].agg([len,np.sum,np.mean])

-**数据透视表 pivote_table函数**

pandas为我们提供了非常强大的函数pivot_table(),该函数就是实现数据透视表功能的。我们先看看这个函数的语法和参数:

pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All')

data:需要进行数据透视表操作的数据框

index:指定某些原始变量作为行索引

columns:指定哪些离散的分组变量

fill_value:使用一个常数替代缺失值,默认不替换

margins:是否进行行或列的汇总,默认不汇总

dropna:默认所有观测为缺失的列

margins_name:默认行汇总或列汇总的名称为'All'

例1:对一个分组变量(Sex),一个数值变量(Height)作统计汇总

pd.pivot_table(student, values=['Height'], columns=['Sex'])

例2:对一个分组变量(Sex),两个数值变量(Height,Weight)作统计汇总

pd.pivot_table(student, values=['Height','Weight'], columns=['Sex'])

例3:对两个分组变量(Sex,Age),两个数值变量(Height,Weight)作统计汇总

pd.pivot_table(student, values=['Height','Weight'], columns=['Sex','Age'])

这样的结果并不像Excel中预期的那样,该如何变成列联表的形式的?很简单,只需将结果进行非堆叠操作(unstack)即可: pd.pivot_table(student, values=['Height','Weight'], columns=['Sex','Age']).unstack()

[](https://www.cnblogs.com/wobujiaonaoxin/articles/11386046.html)

[](https://mp.weixin.qq.com/s/GPaSz4viebOik_XeGMmq4A)

[](https://blog.csdn.net/weixin_30763455/article/details/96917719)

————————————————

版权声明:本文为CSDN博主「python-小卒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/m0_64336020/article/details/121540951

二、Rainmeter如何使用啊

RM并没有完美的配置编辑器,所以你需要用你最常用的文本编辑器来手动配置。RM的设定被打散在很多地方,但对于大部分的用户来说,Rainmeter.ini是唯一需要你调整的地方。

一般配置文件也就是通配文件就是Rainmeter.ini,皮肤配置文件是在#skin-name#.ini里调整。

注意:由于Refresh会把旧的值写回配置文件,所以某些setting不能在Rainmeter运行时更改。所以当你发现部分setting更改无效的时候尝试下把整个RM关闭再修改。

如果Rainmeter.ini没有被放在默认的位置,可以用它来指向定义。

定义skin文件夹的路径,但必须在以独立的子文件夹的形式放在skins文件夹下。

目前正起作用的配置文件名,这可以用来强制使用某些配置。你必须同时定义RainmeterCurrentConfigIni。

目前正起作用的配置文件。(仅为配置文件,并非路径)

文件主要由[Rainmeter]和[Statistics]两部分组成,[Rainmeter]部分包含一般设定可以用来改变RM的行为表现。此配置是作为所有被打开的Config文件的默认值。一旦Config被打开即会在Rainmeter.ini下将配置写入自己的那部分中。[Statistics]下包含着大部分的Measures,请不要手动去修改它。

[TrayMeasures]是个特别的部分,用来定义系统托盘图标的,只要设定了一个正常的有意义的值。

以下这些必须放在[Rainmeter]下(或者放在各个Config中):

窗口的X坐标,负值有效,相对于右边屏幕位置

窗口的Y坐标,相对于屏幕底部位置。

如果设置成1,负坐标将可以正常定义;如果设置成0,则会从桌面右下角抵扣。

如果设置成1,窗口的位置会被记录在Rainmeter.ini文件中,当RM下次启动时会仍然出现在那个位置。

如果设置成1,此窗口会始终出现在其它窗口的前面,也就是所谓的的始终前置窗口。如果设置成0,窗口位置是Normal,如果设置成-1,则窗口会后置于其它窗口。-2代表钉在桌面上,2则代表是前置级别最高,前置于其他前置窗口。注意的是-2钉在桌面上仅在Explorer-Shell下工作。

如果设置成1,窗口可以被鼠标拖动,如果设置成0,这窗口固定。

如果设置成1,则窗口在移动中会自动边缘吸附。

如果设置成1,当鼠标指针移动到窗口范围内时,窗口便会消失。当鼠标指针移开窗口范围时,窗口又会重新出现。如果按住Shift、Ctrl和Alt时移动鼠标,则窗口不会消失或重现。

如果设置成1,RM会在系统启动时隐藏,你可以使用!RainmeterShow-bang来使他显形。

如果设置成1则支持本地透明(仅限Win2K&XP)。

窗口的透明值,数值范围在0~255之间。需要开启NativeTransparency。

如果设置成1则鼠标穿透,需要开启NativeTransparency。

当鼠标左键在RM窗口上按下后所执行的命令,注意此处不支持拖动。

当鼠标右键在RM窗口上按下后所执行的命令。

当鼠标左键在RM窗口上放开后所执行的命令。

当鼠标右键在RM窗口上放开后所执行的命令,注意此处不支持右键环境菜单。

当鼠标掠过RM窗口时所执行的命令。

当鼠标离开RM窗口时所执行的命令。

设定桌面工作区域,定义工作区域最大的窗口覆盖,用四个逗号进行值的分割。(e.g. DesktopWorkArea=0,0,1920,1200)注意如果移动Taskbar会重新设定成Windows默认值(改变屏幕分辨率也会出现同样情况)。

定义窗口淡出的时间值,时间单位为毫秒,设置为0,此项无效。

TrayExecuteL, TrayExecuteM, TrayExecuteR, TrayExecuteDL, TrayExecuteDM, TrayExecuteDR

鼠标双击系统托盘图标时执行的命令,注意TrayExecuteR权限高于系统托盘的环境菜单。

Config刷新时执行的命令。刷新同样会在Config第一次运行时起作用。

定义RM的配置文件编辑器应用程序,默认为Notepad记事本。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下部分必须放在[TrayMeasure]部分下:

定义托盘所用的位图的名称。位图的帧数可以任凭你所想,不过大小必须限制在16*16上。路径需关联于Rainmeter's-Skins文件夹。

皮肤文件放在RM安装根目录下的skins文件夹内。单个皮肤请创立独立子文件夹进行存放。一个可用的皮肤一般包含ini配置文件、image&icon等。单个皮肤文件夹内可以包含多个配置文件但只有一个可以被激活,这也允许skiner定制多种局部差异性皮肤以满足不同用户的需求。

注意:请不要在文件夹和配置文件命名时使用空格。

[Meters]:实际测量值具象化表现方式。

在一个measure上捆绑多个meter是可行的。

当然不是必须要按照如上的顺序来写,但是如果能将代码写的比简单清晰明了,对于插件的使用者来说可以说会方便很多呢。

对于开发者来说尽量将[Variables]变量放在配置文件的顶部,这样可以方便使用者进行自己的配置。对于需要手动更新的关键字请用#字符来分隔(e.g.#Username#:#Password#)。

以下这些必须放在[Rainmeter]部分中:

背景图片名,粉红色(255,0,255)可以作为透明背景。支持BMP、JPG、PNG(带有Alpha通道)。

定义背景图像的边缘,在BackgroundMode=3的时候也不会被缩放。

如果Background模式设置为2的时候,此项定义背景色。

如果Background模式设置为2的时候,此项定义第二颜色的背景梯度(颜色渐变的第二颜色)。

如果Background模式设置为2的时候,此项定义颜色梯度(颜色渐变)的角度。角度以弧度制定义。

此项描述的是纯背景颜色周围的斜缘边。0=无,1=凸起,2=凹陷。

Meters的更新时间,单位是毫秒(1秒=1000毫秒)。默认值为1000(i.e.1秒)

如果设置成1,窗口会在每次更新时进行大小重新计算,必要情况下会自动缩放窗口大小。

定义窗口不允许被拖动的区域。需要定义4个值并以逗号分隔。这个值定义的是不允许拖动的区域。负值是从对边开始计算的。

设置成1则窗口始终保持在监视器的范围之内。

(建议玩全屏降分辨率游戏的用户不要开启此项选项,这样会导致退出游戏后插件移位)

皮肤作者的名字和E-Mail地址。该字符串会显示在关于的对话框内。

此插件支持的最低RM引擎版本。如果你认为没必要可以不写。

The version is a single number that can be calculated like this: Major* 1000+ Minor. E.g. a value for Rainmeter 0.11.4 would be 11004.

每个Measures的命名必须唯一并且需要放用“[]”字符框起。只要在一个配置文件中命名不重复,名称可以随意。不要在命名中使用空格。Meters和Measures的命名是捆绑的,也就是同一指向的要命名相同。

注意:为了使测量值能显示相对最低和最高值,某些meters需要一系列的值如Bar、Histogram,etc.。并非所有的measures能够自动的测算出最低和最高值,所以某些measures请手动配置最高值和最低值。

这里定义Measures,有效值如下:

测算CPU负载(如需独立监控各核占用情况开启PerfMon插件)。

显示系统开机后持续的时间,仅在STRING-meter下工作。

如果设置成1,反转测量值。(e.g.将空闲硬体容量反转为目前硬体占用容量)

如果实际测量值超过设定值时执行的命令。这个动作在测定值超越设定值时仅会被执行一次,所以如果要再次执行此动作前测定值需低于设定值。

如果实际测量值低于设定值时执行的命令。这个动作在测定值低于设定值时仅会被执行一次,所以如果要再次执行此动作前测定值需高于设定值。

当测量值等于IfEqualValue定义的值时执行的命令。当测量值等于设定值时命令仅执行一次,如果需要再次执行,测量值必须先低于或者高于设定值。值四舍五入到整数。

如果设置成1,在启动时不进行测量。

此值决定着测量频率。此值于Update值绑定。比如Update=1000&UpdateDivider=30,则没30s测算一次。此项默认值为1。

此项可以替换关键词,必须成对出现并用逗号分隔,注意必须要用引号引出。(e.g.Substitute="cat":"dog"表述的是在测量值中将关键词cat全部替换成dog)

定义窗口的测量平均取值。(e.g.如果设置成10则将输出最后10次测量的平均值)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

关于margins命令的内容到此结束,希望对大家有所帮助。