2021-06-04

Tessent ATPG进阶:解锁多种Fault Model的工程实践与选型指南 本文深入探讨Tessent ATPG中多种Fault Model的工程实践与选型策略,涵盖Stuck-at、Transition、Bridge等核心模型的应用场景与配置技巧。通过实际案例解析,展示如何组合不同Fault Model提升芯片测试覆盖率,特别针对汽车电子、超低功耗芯片等复杂场景提供专业解决方案。 阅读详情

dataframe数据的选取和操作

import pandas as pd
import numpy as np
import cx_Oracle
con =cx_Oracle.connect('scott/123@localhost:1521/orcl',encoding='utf-8')
sql =f''' SELECT e.empno, e.ename, e.sal, e.deptno
          FROM emp e
        UNION ALL
        SELECT deptno, NULL, AVG(e.sal), NULL
          FROM emp e
         GROUP BY e.deptno '''
# 注意在转化后的df列名中,不同的环境可能大小写不同
df =pd.read_sql(sql,con)
df
# 注意存在None, 也存在NaN 的值

print(df.info())
print(df.head(5))
print("=========================")
print(df.isnull().sum())

# 删除某列项的空值
df.dropna(subset=['ENAME'],inplace=True)  
# df.dropna(inplace=Ture) ,删除所有空值项
print(df.isnull().sum())
print(df.info())

# 删除重复,subset默认是整个表
df.drop_duplicates(inplace=True)
#删除某列
#df.drop(subset='user_geohash',axis=1,inplace=True)

# 列的重命名
df =df.rename(columns={'EMPNO':"员工编号",'ENAME':"员工姓名"}) #当小写empno,ename时获取不到数据

# 索引 df[], loc, iloc ,ix at等
# 构造一个df
data = {'name': ['Joe', 'Mike', 'Jack', 'Rose', 'David', 'Marry', 'Wansi', 'Sidy', 'Jason', 'Even'],
        'age': [25, 32, 18, np.nan, 15, 20, 41, np.nan, 37, 32],
        'gender': [1, 0, 1, 1, 0, 1, 0, 0, 1, 0],
        'isMarried': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df = pd.DataFrame(data, index=labels)
df

# 选取行的三方式:
df[0:2]     # 1.整数索引切片
df['a':'d'] # 2.标签索引切片 
df[(df['age']>30) | (df['isMarried']=='yes')] # 3.布尔数组。

# 列选取
df['name'] # 多列为 df[['name','age']]

# df.loc[]只能使用标签索引
# 选取单行 和 列
df.loc['a',:]            # 选列为:df.loc[:, 'name']
# 选取多行 
df.loc[['a','b','c'],:]  # 选列为:df.loc[:, ['name','age','isMarried']]
# 选取a到d的行
df.loc['a':'d', :]       # 从某列到某列: df.loc[:,'name':'gender']
# 选取 age大于30 的行
df.loc[df['age']>30,:]

# 同时对行和列进行筛选
# 输出年龄大于30的人的姓名和年龄
df.loc[df['age']>30,['name','age']]
# 输出 Mike 或 Marry 的姓名和年龄
df.loc[(df['name']=='Mike') |(df['name']=='Marry'),['name','age']]          



# df.iloc[]只能使用索引
# 选取单行 和 列
df.iloc[0,:]  # 选列为:df.iloc[:, 0]
# 选取多行 
df.iloc[:3,:] # 前三行     # 前三列:df.iloc[:,:3]
# 第二,第四,第六行
df.iloc[[1,3,5],:]  # 选列为:df.iloc[:, [1,3,5]]
# 选取某行到 某的行
df.iloc[1:3, :]  # 从某列到某列: df.loc[:,1:3]

# 同时对行和列进行筛选
#选取第2行的第1列、第3列
df.iloc[1, [0,2]]
#选取前3行的前3列
df.iloc[:3, :3]

# df.ix[]既可以通过整数索引,也可以通过标签索引,df.ix[]是df.loc[]和df.iloc[]的功能集合
#选取第3行的name数据
df.ix[2,'name']
#选取a行、c行的第1列,第2列和第4列数据
df.ix[['a','c'], [0,1,3]]

#单元格选取  df.at[]
# 某年毕业的人
df.at['b','name']
#选取第2行第1列
df.iat[1,0]

# df.where(cond, other=nan, inplace=False, axis=None, level=None,errors=‘raise’, try_cast=False, raise_on_error=None) 
# 如果 cond 为真,保持原来的值,否则替换为other, inplace为真标识在原数据上操作,为False标识在原数据的copy上操作
df.where(df['SAL']<2000) # 产生新的df,满足条件的全部用NaN填充
df.where(df['SAL']<2000,100)# 将小于2000的行,全部替换成100

# 当df每一列的值为数字时可以整体操作
df_num = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])
df_num.where(df_num%2==0,-df_num)
# df.where()=和df.mask 相反
df_num.where(df_num%2==0,-df_num)==df_num.mask(~(df_num%2==0),-df_num)

# df.agg()聚合,max,min,sum,mean,
df=pd.DataFrame([[1,2,3,4],[11,22,33,44],[111,222,333,444],[1111,2222,3333,4444]],columns=['col1','col2','col3','col4'],)#列名
print(df)
# 列的聚合
df['col1'].mean()
df.agg(['max','sum','mean'])
# 行的聚合
# 多列的不同聚合,结果没有的填NaN
df_columns=df.agg({'col1':['sum','min'],'col2':['max','min'],'col3':['sum','min']})

# 对列操作
df['col1']*5
df['col1'] * df['col2'] # 列之间的相互操作
# 对行操作
df.iloc[0,:]*5

# groupby()分组
df.groupby('DEPTNO').sum()          # 聚合了所有能聚合的列
df['SAL'].groupby(df['DEPTNO']).sum()# 只聚合了 SAL 的列
df.groupby(['DEPTNO','ENAME']).sum()
df['SAL'].groupby([df['DEPTNO'],df['ENAME']]).sum()

#按自定义分组
#Series 分组
mapping={‘a’:‘red’,‘b’:‘red’,‘c’:‘blue’,‘d’:‘blue’,‘e’:‘red’,‘f’:‘orange’}
map_series=pd.Series(mapping)
people.groupby(map_series,axis=1).count()
#array分组
states=np.array([‘Ohio’, ‘California’, ‘California’, ‘Ohio’, ‘Ohio’])
years=np.array([2004,2005,2006,2005,2006]) 
df[‘data1’].groupby( [states,years] ).mean()
#字典分组
mapping={‘a’:‘red’,‘b’:‘red’,‘c’:‘blue’,‘d’:‘blue’,‘e’:‘red’,‘f’:‘orange’}
by_column=people.groupby(mapping,axis=1).sum() #指定axis=1,表示对列数据进行聚合分组

#函数分组
#例如:传入len函数(可以求取一个字符串长度数组),实现根据字符串的长度进行分组
people.groupby(len).sum() #将字符串长度相同的行进行求和

#分组键为函数和数组、列表、字典、Series的组合
#引入列表list[ ] 将函数跟数组、列表、字典、Series混合使用作为分组键进行聚合,因为任何东西最终都会被转换为数组
key_list=[‘one’,‘one’,‘one’,‘two’,‘two’] #自定义列表,默认列表顺序和df的列顺序一致
people.groupby([ len,key_list ]).min()

#分组键为具有多重列索引df 的列索引层次
hier_df.groupby(level=‘cty’,axis=1).count() #利用参数level,指明聚合的层级


# 常用的函数
# 读取上一行的数据,若参数设定为3,就是读取上三行的数据;若参数设定为-1,就是读取下一行的数据;
df['昨天收盘价'] = df['收盘价'].shift(-1) 
# 该列的累加值
df['成交量_cum'] = df['成交量'].cumsum()  
# 该列的累乘值,此处计算的就是资金曲线,假设初始1元钱。
print((df['涨跌幅'] + 1.0).cumprod())  
# 排序
df.reset_index(inplace=True)
print(df.sort_values(by=['交易日期'], ascending=1))  # by参数指定按照什么进行排序,acsending参数指定是顺序还是逆序,1顺序,0逆序
print(df.sort_values(by=['股票名称', '交易日期'], ascending=[1, 1]))  # 按照多列进行排序

print(df.empty)  # 判断一个df是不是为空,此处输出不为空
print(pd.DataFrame().empty)  # pd.DataFrame()创建一个空的DataFrame,此处输出为空
print(df.T)  # 将数据转置,行变成列,很有用

# rolling(最近n天的均值)
print(df['收盘价'].rolling(3).max())
#使用expanding操作(从一开始至今的均值)
df['收盘价_至今均值'] = df['收盘价'].expanding().mean()

浮栅晶体管原理深度解析:热电子注入与FN隧穿如何实现1/0存储 本文深入解析了浮栅晶体管的工作原理,重点探讨了热电子注入与FN隧穿机制如何实现1/0存储。作为现代闪存芯片的核心技术,浮栅晶体管通过独特的结构设计实现非易失性存储,文章详细分析了其编程与擦除的物理过程,并对比了两种机制的优缺点,为闪存性能优化提供了理论基础。 阅读详情

相关推荐

开源PACS系统Orthanc(DICOM服务器)配置

PACS(Picture Archiving and Communication System)是医学影像的数字化存储、检索和传输系统,用于管理和存储医学图像和相关信息,如放射学、核医学、超声、病理学等各种医学影像。PACS系统通过数字化技术取代了传统的胶片方式,使医疗机构能够更高效地存储、传输和查看医学图像,从而提高了医疗图像的管理和工作流程。

qq_42231043的博客 6250

2021-04-06

MRGCODING 165

CTFHUB------XSS反射型(WP)

文章目录前言XSS测试平台 前言 一开始我直接在上面写js脚本发现出错,最后发现只能通过下面的输入框来执行XSS测试,于是我们只能用XSS测试平台解决问题 XSS测试平台 注册一个XSS测试平台 这里随便填写 勾选默认模块就够了,点击下一步 这时会出现一个找个将代码复制 拼接到网站后缀name后面,点击send 这时平台会收到一个记录点开即可 得到flag ...

Y4tacker的博客 1万+

2021 04 06

一,多态 二,final修饰符 什么是多态: 同一个对象,在不同时刻表现出来的不同形态。 多态的转型分为向上转型与向下转型两种 向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的在这里插入图片描述 向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。在这里插入图片描述 2.final修饰符 final修饰符可用于类、方法和变量。用final修饰的类不能被扩展,也就是表示类不可被继承。final用于变量前,表示它是只能一次赋值的变量,如果初始化了,则就是常量,即final修饰的变

m0_55689456的博客 98

Unity3D用c#脚本调用前端javascript函数:H5获取unity - webgl 加载并初始化完成的消息

unity3d发布的Webgl 可以作为静态文件加载到H5页面中,并通过javascript 调用unity内置的C#脚本函数,详见Webgl调用unity api。而往往我们需要知道Webgl ready的消息,本文将给出unity 内部调用javascript函数的方案加以解决。

Bravo 2476

保姆级教程:在树莓派4B上用V4L2驱动USB摄像头(附完整代码)

本文提供树莓派4B上使用V4L2驱动USB摄像头的完整教程,涵盖环境配置、V4L2架构解析、代码实现及问题排查。通过详细步骤和完整代码示例,帮助开发者快速掌握嵌入式Linux下的摄像头驱动开发,解决实际应用中的兼容性和性能问题。

weixin_30312563的博客 382
上一篇: 2021-04-20
下一篇: 2021-06-06
我一无所知
博客等级 码龄6年 0粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值