Python数据分析(Pandas)

2023-11-08

pandas基础数据结构,有以下两种:

Series,与array很像也和list相同,Series能保存不同的种数据类型,包括字符串、bool值、数字等等。

DataFrame,二维的表格型数组结构,以下内容以DataFrame为主。

Series初始化(类型转换)s=pd.Series([1,2,3,np.nan,6.8])

索引-行标签,查看值 a.values,a[0],切片都和numpy一样。

索引赋值 a.index.name="索引",a.index=list("abcdef"),就不是01234了。

如果赋值给索引了,再想取切片的话,就不是0:3这样的了,而是s["a":"c"](注意,这里是闭区间,不是左闭右开)

 

DataFrame,是一个二维结构。现在构造一个时间序列

data=pd.date_range("20190101",periods=6)(这里要写起点,周期)

创建一个DataFrame结构,df=pd.DataFrame(np,random,randn(6,4),index=data,columns=list("ABCD"))。如果不指定index和columns,则默认从0开始的数字。随机生成六行四列的随机数组。

除了传入二维数组,我们也可以使用字典传入数据:

df2=pd.DataFrame(["A":1.2,"B":pd.Timestamp("20181001"),"C":pd.Series(1,index=list(range(4)),dtype=float),"D":np.array([3]*4,dtype=int),"E":pd.Categorical(["test","train","test","train"]),"F":"abc"])

查看头尾数据

df.head(),默认前5行

df.tail(3),查看最后3行数据。

df.dtypes,查看所有的数据类型

下标的查看,df.index

列标的查看,df.columns

数据值的查看,df.values

 

pandas读取数据及数据操作

读取excel文件df=pd.read_excel(r“文件路径”),前面加r的意思是不需要对我写的路径进行转义,我写的是什么就是什么。

读取csv文件df=pd.csv.read_csv("文件路径")

行操作,df.iloc[0],df.iloc[0:5]这样的操作。df.loc[0:5],唯一不同就是不是左闭右开,索引5也在里面了。

添加一行dit={把每一列数据,相当于字典输入。}    s=pd.Series(dit)   s.name=前面数据索引号加1    df=df.append(s)

删除一行 df=df.drop([索引号])

列操作 df.columns,查看列名。df["名字"][:5],排在前5的名字。df["xx","xx","xx"]查看多行。

增加一列,df["y"]=range(1,len(df)+1),因为range右边不包含,所以要加一。

删除一列,df=df.drop("y",axis=1)

通过标签选择数据df.loc[[index],[column]]

 

条件选择       df[df["产地"]=="美国"]  df[df["产地"]=="美国"][:5]  只看前5行

df[(df.产地==“美国”)&(df.评分>9)]

df[((df.产地==“美国”)|(df.产地==“中国大陆”))&(df.评分>9)]

缺失值处理

1、dropna   根据标签中的缺失值进行过滤,删除缺失值

参数解释:how=“all”,删除全为空的行或列,inplace=True覆盖之前的数据,axis=0(行)axis=1(列)默认选择行

2、fillna   对缺失值进行填充   df.fiilna(0)  

均值填充df["评分"].fillna(np.mean(df["评分"]),inplace=True)

3、isnull   返回布尔值,判断哪些值是缺失值  df.isnull()  df["名字"].isnull()

4、notnull   isnull的否定式

处理异常值

df[df.投票人数<0]

df[df["投票人数"]%1!=0](不是整数)df[df["投票人数"]%1==0](保留整数)

数据保存

df.to_excel("保存文件的路径")

 

数据格式的转换

查看数据df["XXX"].dtype

类型转换df["XXX"]=df["XXX"].astype("int")

int整数str字符串

将年份转换为整数

df["年代"].astype("int")

查看错误数据df[df.年代=="2008\u200e"]或者写df[df["年代"]=="2008\u200e"]

查看错误数据的具体值df[df.年代=="2008\u200e"]["年代"].values

df.loc[index,"年代"]=2008,然后在查看df.loc[index],数据好了再转换就好啦

将时长转换为整数格式

删除异常值df.drop([index],inplace=True),后面参数True是替换之前的数据。

 

排序

按照投票人数来排序

df.sort_values(by="投票人数",ascending=False),ascending这个参数是空值升序或者降序,False就是从大到小。

多个值,先按照评分排序,再按照投票人数

df.sort_values(by=["评分","投票人数"],ascending=False)

基本统计分析

(1)描述性统计对dataframe中的数值型数据进行描述性统计 df.describe()

通过描述性统计,可以发现异常值

df[df["年代"]>2019],找出之后可以删掉,或者一句到位如下。

df.drop(df[df["年代"]>2019].index,inplace=True)

对index重新赋值df.index=range(len(df))

(2)最值

df["投票人数"].max(),df["投票人数"].min()

(3)均值和中值

df["投票人数"].mean(),df["投票人数"].median()

(4)方差var和标准差std,表示数据的离散程度

df["投票人数"].var(),df["投票人数"].std()

(5)求和

df["投票人数"].sum()

(6)相关系数corr,协方差cov

df[["投票人数","评分"]].corr(),df[["投票人数","评分"]].cov()

(7)计数

len(df),这是总数值。

产地中包含了重复值,所以要分类汇总再看。

df["产地"].unique(),会输入不管重复几次的值。

len(df["产地"].unique()),会输出数值,就是有几个产地。

替换,美国和USA是一样的,由于历史原因造成的,所以要数据替换,再合并。

df["产地"].replace("USA","美国",inplace=True)

df["产地"].replace(["西德","苏联"],["德国","俄罗斯"],inplace=True)

计算每一年电影的数量:

df["年代"].value_counts()

电影产出前5的国家或地区

df["产地"].value_counts()[:5]

保存数据

df.to_excel("XXX.xlsx")

 

数据透视

pandas里面的数据透视表函数叫:pivot_table

1、基础形式

pd.pivot_table(df,index=["年代"]),以年代为索引,没有参数,就是默认计算均值。

展示没有完整展示,可以自己手动定义,查看所有结果。

再这句代码之前设置

pd.set_option("max_columns",100),展示100列

pd.set_option("max_rows",500),展示500列

再运行,就会展示所有数据了。

2、也可以有多个索引,实际上,大多数的数据透视参数可以通过列表获取多个值。进行聚合计算。

pd.pivot_table(df,index=["年代","产地"])

3、也可以指定需要统计汇总的数据

pd.pivot_table(df,index=["年代","产地"],values=["评分"])

4、还可以指定函数,来统计不同的统计值

pd.pivot_table(df,index=["年代","产地"],values=["投票人数"],aggfunc=np.sum)

通过将”投票人数“列和”评分“列进行对应分组,对”产地“实现数据聚合和总结。

pd.pivot_table(df,index=["产地"],values=["投票人数","评分"],aggfunc=[np.sum,np.mean])

5、非数值(NaN)难以处理,如果想移除他们,可以使用”fill_value“将其设置为0.即将空值设置为0.

pd.pivot_table(df,index=["产地"],aggfunc=[np.sum,np.mean],fill_value=0)

6、加入margins=True,可以再下方显示一些总和数据。

pd.pivot_table(df,index=["产地"],aggfunc=[np.sum,np.mean],fill_value=0,margins=True)

7、对不同值执行不同的函数:可以向aggfunc传递一个字典。不过必须将标签做的更加简洁才行。

对各地区的投票人求和,对评分求均值。

pd.pivot_table(df,index=["产地"],values=["投票人数","评分"],aggfunc={"投票人数":np.sum,"评分":np.mean},fill_value=0)

对各个年份的投票人求和,对评分求均值。

同理,如上。pd.pivot_table(df,index=["产地"],values=["投票人数","评分"],aggfunc={"投票人数":np.sum,"评分":np.mean},fill_value=0)

透视表过滤出来,都是dataframe

求出1994年的电影平均分,和1924年的电影平均分。

table=pd.pivot_table(df,index=["年代"],values=["投票人数","评分"],aggfunc={"投票人数":np.sum,"评分":np.mean},fill_value=0)

table[table.index==1994] ,或者table[table.index==1924]

评分均分前10的年份,table.sort_values("评分",ascending=False)[:10]

 

Series层次化索引,table可以直接补充没打完的函数、包什么的。

s=pd.Series(np.arrange(1,10),index=[["a","a","a","b","b","c","c","d","c"],[1,2,3,1,2,3,1,2,3]])

(类似excel的合并单元格)

查看具体index和数据、取a到c的所有数据、取内层第一个数据、取具体的数据a对应的2对应的值,s.index,s["a"],s["a":"c"],s[:,1],s["a",2]

可以通过unstack方法可以将Series变成一个DataFrame,容易产生缺失值

s.unstack(),转回层次化索引的Series用:s.unstack().stack()。

DataFrame的层次化索引

生成一个四行三列的DataFrame,reshape重新约定了它的形状,然后定义四层索引。

data=pd.DataFrame(np.arange(12).reshape(4,3),index=[["a","a","b","b"],[1,2,1,2]],co;umn=[["A","A","B"],["Z","X","C"]])

index重命名行、列、调换外层和内层索引的顺序,data.index.names=["row1","row2"],data.columns.names=["col1","col2"],data.swaplevel("row1","row2")

 

把咱们电影数据处理成多层次索引

想把产地和年代设成索引,产地是外层索引,年代为内层索引

set_index可以把列变成索引。

reset_index是把索引变成列。

df=df.set_index(["产地","年代"])

每一个索引都是一个元组

df.index[0]

获取所有美国电影,由于产地信息已经变成索引,因此要用.loc方法

df.loc["美国"]

取消多层索引

df.reset_index(),相当于全部取消了

数据旋转

行列转化,即为转置。data.T

 

数据分组,分组运算

GroupBy技术:实现数据的分组和分组运算,作用类似于数据透视表

按照电影的产地进行分组

group=df.groupyby(df["产地"])

先定义一个分组变量group

type(group)

可以计算分组后的各个统计量

group.mean()

计算每年的平均评分

df["评分"].groupby(df["年代"]).mean()

注意:只会对数值变量进行分组运算(如果是字符串就不会这样操作了,也不会显示)

我们也可以传入多个分组变量

df.groupby([df["产地"],df["年代"]]).mean()

获取每个地区,每一年的电影的评分均值

df["评分"].groupby([df["产地"],df["年代"]])

means=group.mean()

 

离散化处理,即为区间化,分组,pandas提供了cut()函数,参数如下:

pd.cut(x,bins,right=True,labels=None,retbins=False,prcision=3,include_lowset=False)

把评分进行离散化处理,评分9以上定义为A,7-9定义为B,5-7为C,3-5为D,3以下为E。

pd.cut(df["评分"],[0,3,5,7,9,10],labels=["E","D","C","B","A"]),就是把这些数据划分到一些区间里去,然后区间对应ABCDE等级里面去。

根据投票人数,来刻画电影热门程度,投票越多的热门程度越高。

bins=np.percentile(df["投票人数"],[0,20,40,60,80,100])

df["热门程度"]=pd.cut(df["投票人数"],bins,labels=["E","D","C","B","A"])

冷门高分电影

df[(df.热门程度=="E")&(df.评分等级=="A")]

烂片

df[(df.热门程度=="A")&(df.评分等级=="E")]

 

合并数据集

(1)append,在末尾添加一些数据的时候,多用append,相当于一个上下拼接,最好数据结构一样。

df_usa=df[df.产地=="美国"]

df_china=df[df.产地=="中国大陆"]

df_china.append(df_usa)

(2)merge,最常用,相当于横向拼接。

pd.merge(left,right,how="inner",on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes="_x","_y"),copy=True,indicator=False)

内连接,就是交集,如果选择左边,就是保证左边不变,右边有交集就补充,左没有右有就不要。

on是连接键,必须在左和右都找到相同就用on,不一样就分别设置。

sort:是通过连接字典顺序排序,默认True,设置为False将在大多数情况下极大提高性能。

df2=df2.sample(frac=1),这样相当于打乱数据,上下顺序打乱,index还是原来的lindex。

重新设定index,df2.index=range(len(df2))。

(3)concat:将多个数据集批量合并

dff=pd.concat([df1,df2,df3],axis=0),上下拼接,axis默认为0。

dff=pd.concat([df1,df2,df3],axis=1),左右拼接。

 

统计分析:

np.random.seed(1234)

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.count() #非空元素计算

d1.min() #最小值

d1.max() #最大值

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

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

d1.quantile(0.1) #10%分位数

d1.sum() #求和

d1.mean() #均值

d1.median() #中位数

d1.mode() #众数

d1.var() #方差

d1.std() #标准差

d1.mad() #平均绝对偏差

d1.skew() #偏度

d1.kurt() #峰度

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

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

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

def stats(x):

return pd.Series([x.count(),x.min(),x.idxmin(),x.quantile(.25),x.median(),x.quantile(.75),x.mean(),x.max(),x.idxmax(),x.mad(),x.var(),x.std(),x.skew(),x.kurt()],index = ['Count','Min','Whicn_Min','Q1','Median','Q3','Mean','Max','Which_Max','Mad','Var','Std','Skew','Kurt'])

stats(d1)

 

 

查询数据的前5行或末尾5行

student.head()

student.tail()

 

查询指定的行

  1. student.ix[[0,2,4,5,7]] #这里的ix索引标签函数必须是中括号[]

查询指定的列

  1. student[['Name','Height','Weight']].head() #如果多个列的话,必须使用双重中括号

也可以通过ix索引标签查询指定的列

 

查询所有女生的信息

  1. student[student['Sex']=='F']

查询出所有12岁以上的女生信息

  1. student[(student['Sex']=='F') & (student['Age']>12)]

查询出所有12岁以上的女生姓名、身高和体重

  1. student[(student['Sex']=='F') & (student['Age']>12)][['Name','Height','Weight']]
  1. student.ix[:,['Name','Height','Weight']].head()

查询指定的行和列

  1. student.ix[[0,2,4,5,7],['Name','Height','Weight']].head()

 

你只需要使用describe方法就可以实现这样的统计了。

  1. student['Sex'].describe()

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

  1. df.corr()

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

  1. df.corr('spearman')

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

  1. df.corrwith(df['x1'])

数值型变量间的协方差矩阵

  1. df.cov()

 

六、缺失值处理

现实生活中的数据是非常杂乱的,其中缺失值也是非常常见的,对于缺失值的存在可能会影响到后期的数据分析或挖掘工作,那么我们该如何处理这些缺失值呢?常用的有三大类方法,即删除法、填补法和插值法。
删除法:当数据中的某个变量大部分值都是缺失值,可以考虑删除改变量;当缺失值是随机分布的,且缺失的数量并不是很多是,也可以删除这些缺失的观测。
替补法:对于连续型变量,如果变量的分布近似或就是正态分布的话,可以用均值替代那些缺失值;如果变量是有偏的,可以使用中位数来代替那些缺失值;对于离散型变量,我们一般用众数去替换那些存在缺失的观测。
插补法:插补法是基于蒙特卡洛模拟法,结合线性模型、广义线性模型、决策树等方法计算出来的预测值替换缺失值。

这是一组含有缺失值的序列,我们可以结合sum函数和isnull函数来检测数据中含有多少缺失值:

  1. In [130]: sum(pd.isnull(s))
  2. Out[130]: 9

直接删除缺失值s.dorpna(),默认情况下,dropna会删除任何含有缺失值的行。

返回结果表明,数据中只要含有缺失值NaN,该数据行就会被删除,如果使用参数how=’all’,则表明只删除所有行为缺失值的观测。s.dorpna(how=’all’)

使用一个常量来填补缺失值,可以使用fillna函数实现简单的填补工作:
1)用0填补所有缺失值 df.fillna(0)

2)采用前项填充或后向填充  df.fillna(method="ffill"),用前一个观测值填充,df.fillna(method="bfill"),用后一个观测值填充。

3)使用常量填充不同的列,df.fillna({"x1":1,"x2":2,"x3":3})

4)用均值或中位数填充各自的列

x1_median=df["x1"].median()

x2_mean=df["x2"].mean()

df.fillna({"x1":x1_median,"x2":x2_mean})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python数据分析(Pandas) 的相关文章

  • Java Swing实现Mybatis3代码生成器,使用jtattoo第三方java Swing美化包

    项目介绍 代码生成器 目前只支持MySQL 其他的数据库需要在代码中修改部分配置以及更换JDBC驱动 整个项目从MySQL数据库连接测试 创建数据库 导入SQL脚本 保存基本配置 生成最后代码 适合初学swing的开发人员 本项目使用jta
  • 电巢科技出席第26届西北地区电子技术与线路课程教学改革研讨会,聚焦一流课程建设!

    2023年9月15日至17日 北方民族大学召开第26届西北地区电子技术与线路课程教学改革研讨会 本次会议围绕 梳理课程教学内容 改革教学方式 探索虚拟教研室构建方式 完善基层教学组织 推进一流课程和一流教材资源共享 提高课程教学质量 这些主
  • SpringBoot自动配置理解

    首先 所有的启动类中都有一个 SpringBootApplication注解 放置在Springboot启动类上 表明该类是开启Springboot容器的入口 它是一个复合注解 里面包含了包扫描 自动注入 配置注入的功能 按Ctrl 鼠标左
  • 4个快速查找Linux历史命令的技巧(history)

    history 法1 光标上下键 法2 ctrl r 输入某条命令的关键字 找出来对应的命令 按右光标键 法3 数字 执行历史命令中第N条命令 法4 字符串 搜索历史命令中最近一个以xxxx字符开头的命令 例如 vim
  • C练题笔记之:Leetcode-307. 区域和检索 - 数组可修改

    题目 给你一个数组 nums 请你完成两类查询 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间 包含 的nums元素的 和 其中 left lt right
  • Rust- 多线程

    Rust s standard library provides support for native threads with its std thread module allowing you to run code in paral
  • CGI的编译和执行

    g DDOCUMENT ROOT var www test o cgi bin suphp cgi install suphp cpp lcrypt chmod 4711 cgi bin suphp cgi service httpd re
  • 简要介绍

    神经辐射场 NeRF 原理 挑战与未来展望 1 背景介绍 随着深度学习和计算机图形学的不断发展 人工智能和图形学领域的交叉研究越来越多地受到关注 神经辐射场 NeRF 是其中一个极具潜力的研究方向 它结合了计算机图形学和深度学习 旨在通过神
  • 一秒钟变身明星:用swapface软件体验星光熠熠的感觉!

    你是否曾经想过能够用电脑或手机来实时地将自己的面部与其他人或角色进行交换 你是否曾经想过能够用一款简单易用的软件来制作出有趣或惊艳的面部交换直播 视频或图片 如果你的答案是肯定的 那么你一定要试试swapface软件 这是一款由Swapfa
  • 广元市2021年度专业技术人员公需科目 自动考试python selenium自动化

    def sou a for q in range 5 10次 browser get a time sleep 3 browser switch to default content bo browser find element by i
  • keil调试warning和error

    STM32 逻辑错误 1 若要用引脚重映射 一定要把该引脚原来的功能DISABLE 不然永远都没有想要的结果 例如 将TIM4 CH1映射到PB4 PB4原功能是JRST 因此需要调用 GPIO PinRemapConfig GPIO Pa
  • Xshell配置ssh免密码登录-密钥公钥(Public key)

    为什么80 的码农都做不了架构师 gt gt gt 1 简介 ssh登录提供两种认证方式 口令 密码 认证方式和密钥认证方式 其中口令 密码 认证方式是我们最常用的一种 这里介绍密钥认证方式登录到linux unix的方法 使用密钥登录分为
  • OpenLDAP源码安装及配置管理

    OpenLDAP源码安装 下载OpenLDAP源码 http www openldap org software download ftp ftp openldap org pub OpenLDAP openldap release tgz
  • Linux(centos8)用户管理

    添加用户 添加用户 useradd user 查看用户 id user 修改用户密码 需要root权限 passwd user 可以直接修改当前用户密码 passwd 查看用户密码保存文件 cat etc passwd 在这里插入代码片 查
  • MDK Error #550解决方案

    Error 550 Requested device STM32F302R8Tx STMicroelectronics not found 这个报错是因为我们没有安装pack包 解决方法如下 5条消息 Keil STM32F3xx DFP
  • JavaScript 逆向调试技巧

    前段时间尝试对某音的 PC 端进行了逆向 目前已经全部逆向出来了 在这里总结下一些调试技巧和总结 本文不会涉及任何的详细代码 仅仅是作为技术来讨论 一 加密分析 在这里以账户下的视频列表为例 可以看到 在 dy 中 加密的 JS 是 web
  • 快捷给UE4项目改名

    很多时候我们对一个工程随意地起了一个随意的名字 这很常见 如果我们想要后面修改整个项目的名字 似乎应该是一件简单的事情 但是这个过程充满了陷阱 如果做错了 您可能会无意间破坏您的项目 手动的做当然是一件非常困难的事情 尤其是对于C 的项目
  • 积分商城游戏化运营?积分游戏应该如何正确设置

    积分商城是一种可以通用获得积分在其中获得礼品的线上商城 这种商城可以起到拉取新用户的作用 帮助企业以及商家带来更多的新用户 因此 一些企业和商家在进行营销的时候都选择这种方法 一般情况下 企业和商家搭建了自己的积分商城之后 就会设置一些积分
  • js 数组过滤操作 过滤两组数组相同的 id

    过滤两组数组相同的 id const arr1 id 145 firstname dave lastname jones id 135 firstname mike lastname williams id 148 firstname bo

随机推荐

  • Zookeeper 的下载安装

    文章目录 一 下载 二 解压 1 在解压后的 bin 目录下 新增两个文件夹 2 在 conf 下 将 zoo sample cfg 复制一份 重命名为 zoo cfg 3 修改 zoo cfg 三 测试 1 启动服务端 2 启动客户端 3
  • Git下载和Git常用命令

    下载git 要下载和安装 Git 请按照以下步骤进行操作 1 访问官方网站 打开 Git 官方网站 https git scm com 2 下载 Git 安装程序 3 选择适用于你的操作系统的下载链接 Git 支持多个操作系统 包括 Win
  • SpringFramework核心技术一(IOC:基于Java的容器配置)

    Bean和 Configuration Spring新的Java配置支持中的中心构件是 Configuration注释类和 Bean注释方法 一 基本概念 Bean和 Configuration Spring新的Java配置支持中的中心构件
  • Nginx下同域部署多个Vue项目(history路由模式),报404、500错误

    主要内容 一 环境 二 问题描述 三 问题解决 1 修改vue项目中的vue config js文件 2 修改Nginx的nginx conf配置文件 3 Nginx目录结构 一 环境 系统 windows nginx 1 20 2 nod
  • 整理 qt opengl,自己的基础框架 —— 绘制一个彩色三角形

    网上很多都是QGLWidget例子 而cube 虽然说明文档上说再简单不过了 但是对于一个0基础的来说 还是像看天书一样 opengl的例子还有一个hellgl2 看着比较简单 但是那个log生成的代码使用了QVector3D显得有点复杂
  • laravel 操作mysql数据库的三种方式

    一 使用DB门面操作 需要引入 DB类 Illuminate Support Facades DB 查询数据库记录 DB select SQL语句 DB select select from stu from 以数组形式返回结果 增加数据库
  • 使整个网页变黑白色(灰色)的特效代码

    全站CSS代码 html filter progid DXImageTransform Microsoft BasicImage grayscale 1 使用方法 这段代码可以变网页为黑白 将代码加到CSS最顶端就可以实现素装 建议全国站长
  • 到现在才理解高斯分布的均值与方差为什么是0和1

    问题的来源 如图所示 为什么标准正态分布的期望值0 方差为1呢 如果是针对x变量 期望值为0可以理解 那么方差为1怎么理解呢 显然不可能为1 如果针对y变量 显然所有值都大于0 怎么会期望值会大于0呢 先看数学期望的定义 期望值本身是对所有
  • 网络性能评估

    在Linux中常见的网络性能指标如下 l 带宽 表示链路的最大传输速率 单位是b s 比特 秒 在位服务器选网卡时 带宽就是最核心的参考指标 常用的带宽有1000M 10G 40G 100G等 网络带宽测试 测试的不是带宽 而是网络吞吐量
  • pycharm激活(JetBrains IDEA 系列产品通用xx方法(license server))

    http xclient info a f0b9738a 36fd 8a97 a966 0d3db497092d html 1 打开激活窗口 2 选择 Activate new license with License server 用li
  • es6 对象的解构用法

    const forms username 王五 password paassword gender 0 result token 1212dsfdasdasdfadasdasdasd id ididididiidid const usern
  • Unity StrangeIOC傻瓜式使用教程(dispatch用法)

    公司用的框架是StrangeIOC 开始完全不知道怎么用 打断点也跟踪不到代码 后来网上各种寻找详解 但是说的都过于高大上 全是专业名词 依赖注入等 完全不适合我这种新人小白理解 最后在自己的各种实践下 总算摸透了其中dispatch用法
  • all query identities do not appear in gallery

    问题描述 在reid strong baslline使用Market 1501数据集训练reid模型后 使用自己的数据集仿照Market 1501制作相同格式的数据集 训练时报如下错误 查看原因 Martet 1501中Query和gall
  • python中安装完virtualenv,创建虚拟环境时报错'virtualenv' 不是内部或外部命令,也不是可运行的程序

    创建虚拟环境包时会报 virtualenv 不是内部或外部命令 也不是可运行的程序 错误 首先排除是否是单词拼写错误 在网上查了好久都没有自己出现的那种情况 可以成功安装 通过pip list 查询时显示安装成功 但会有两行黄色字 大致意思
  • gradle各版本下载地址

    http blog csdn net wangqjpp article details 52218314 gradle各版本下载地址 http services gradle org distributions 以前都是手动下载gradle
  • C语言的整型溢出问题

    整型溢出有点老生常谈了 bla bla bla 但似乎没有引起多少人的重视 整型溢出会有可能导致缓冲区溢出 缓冲区溢出会导致各种黑客攻击 比如最近OpenSSL的heartbleed事件 就是一个buffer overread的事件 在这里
  • wx.getUserProfile使用方法

    1 单独使用 wx getUserProfile desc 展示用户信息 声明获取用户个人信息后的用途 后续会展示在弹窗中 请谨慎填写 success res gt console log res this setData userInfo
  • SymPy Tutorial(译)

    小记 2020 2 26 本文是翻译 官方SymPy手册指南 只是为了方便而自己翻译 前言 本教程假设读者已经了解Python编程语言的基础知识 如果您还没有掌握 建议学习官方的Python教程 本教程假设您具有良好的数学背景 大多数例子需
  • 学习pyqt (二)————信号/槽&主次界面&主次线程编程经验总结

    今天准备总结一下pyqt编写界面的经验 这样以后遇到同样问题就可以查看并且很快回忆起来 环境搭建 经过一周的研究 我发现使用pyqt编写界面最快的方式还是eric pycharm 使用eric6和pycharm同时打开你正在编写的程序 需要
  • Python数据分析(Pandas)

    pandas基础数据结构 有以下两种 Series 与array很像也和list相同 Series能保存不同的种数据类型 包括字符串 bool值 数字等等 DataFrame 二维的表格型数组结构 以下内容以DataFrame为主 Seri