大家好,今天来为大家解答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命令的内容到此结束,希望对大家有所帮助。