机器学习测试笔记(6)——数据清洗和准备(下)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 机器学习测试笔记(6)——数据清洗和准备(下)

2 数据规整


2.1层次化索引

def data_index():
   data = pd.Series(np.random.rand(6),
   index=[
               ['江苏','江苏','浙江','浙江','广东','广东'],
               ['南京','苏州','杭州','宁波','广州','深圳']
           ])
   print("data is:\n",data)
   print("data index is:\n",data.index)
   print("data['江苏']:\n",data['江苏'])
   print("data.loc[:,'深圳']:\n",data.loc[:,'深圳'])
   print("data.unstack()\n",data.unstack())
   print("data.unstack().stack()\n",data.unstack().stack())


输出

data is:
江苏      南京    79.0
          苏州    7.0
浙江      杭州    21.0
          宁波    14.0
广东      广州    40.0
          深圳    30.0
dtype: float64
data index is:
MultiIndex([('江苏', '南京'),
            ('江苏', '苏州'),
            ('浙江', '杭州'),
            ('浙江', '宁波'),
            ('广东', '广州'),
            ('广东', '深圳')],
           )
data['江苏']:
南京   79.0
苏州   7.0
dtype: float64
data.loc[:,'深圳']:
广东    30.0
dtype: float64
data.unstack()
       南京   宁波    广州    杭州   深圳  苏州
广东   NaN    NaN     40.0    NaN   30.0  NaN
江苏   79.0   NaN     NaN     NaN   NaN   7.0
浙江   NaN    14.0    NaN     21.0  NaN   NaN
data.unstack().stack()
广东      广州    40.0
          深圳   30.0
江苏      南京   79.0
          苏州   7.0
浙江      宁波   14.0
          杭州   21.0
dtype: float64


2.2 合并数据集

#2.2.1按指定列合并
def merge_data():
   df1 =  pd.DataFrame({'id':[1,2,3,4],'val':['Jerry','Tom','Kerry','Jessca']})
   df2 =  pd.DataFrame({'id':[1,2,3,4,5],'val':['Kerry','Peter','Jerry','Tom','Jessca']})
   print("df1 is:\n",df1)
   print("df2 is:\n",df2)
   print("merage:\n",pd.merge(df1,df2,on='id'))
   df1 =  pd.DataFrame({'id1':[1,2,3,4],'val':['Jerry','Tom','Kerry','Jessca']})
   df2 =  pd.DataFrame({'id2':[1,2,3,4,5],'val':['Kerry','Peter','Jerry','Tom','Jessca']})
   print("merage:\n",pd.merge(df1,df2,left_on='id1',right_on='id2'))
   print("merage:\n",pd.merge(df1,df2,left_on='id1',right_on='id2',how='outer'))


输出

df1 is:
    id val
0   1  Jerry
1   2  Tom
2   3  Kerry
3   4 Jessca
df2 is:
    id val
0   1  Kerry
1   2  Peter
2   3  Jerry
3   4  Tom
4   5 Jessca
merage:
    id  val_x  val_y
0   1   Jerry  Kerry
1   2   Tom    Peter
2   3   Kerry  Jerry
3   4   Jessca Tom
merage:
    id1  val_x  id2  val_y
0    1   Jerry  1    Kerry
1    2   Tom    2    Peter
2    3   Kerry  3    Jerry
3    4   Jessca 4    Tom
merage:
    id1  val_x   id2   val_y
0  1.0  Jerry    1   Kerry
1  2.0  Tom      2   Peter
2  3.0  Kerry    3   Jerry
3  4.0  Jessca   4   Tom
4  NaN  NaN      5  Jessca


#2.2.2合并数组
def  join_data():
    df1 = pd.DataFrame([['苏州','南京'],['广州','深圳'],['宁波','杭州']],
                       index =['江苏','广东','浙江'],
                       columns=['城市1','城市2'])                      
    df2 = pd.DataFrame([['赣州','南昌'],['成都','泸州'],['宁波','杭州']],
                       index =['江西','四川','浙江'],
                       columns=['城市3','城市4'])
    print("df1 is:\n",df1)
    print("df2 is:\n",df2)
    print("join:\n",df1.join(df2))
    print("outer join:\n",df1.join(df2,how='outer'))


输出

df1 is:
        城市1 城市2
江苏     苏州  南京
广东     广州  深圳
浙江     宁波  杭州
df2 is:
        城市3 城市4
江西     赣州  南昌
四川     成都  泸州
浙江     宁波  杭州
join:
      城市1  城市2   城市3     城市4
江苏  苏州   南京    NaN       NaN
广东  广州   深圳    NaN       NaN
浙江  宁波   杭州    宁波      杭州
outer join:
      城市1  城市2    城市3  城市4
四川  NaN   NaN      成都    泸州
广东   广州  深圳     NaN    NaN
江苏   苏州  南京     NaN    NaN
江西   NaN  NaN      赣州    南昌
浙江   宁波  杭州     宁波   杭州


#2.2.3 合并序列
def concat_data():
   s1 = pd.Series([1,2],index=['苏州','南京'])
   s2 = pd.Series([3,4],index=['广州','深圳'])
   s3 = pd.Series([5,6],index=['宁波','杭州'])
   print("concat:\n",pd.concat([s1,s2,s3]))
   print("concat use key:\n",pd.concat([s1,s2,s3],keys=['江苏','广东','浙江']))
   df1 = pd.DataFrame([['苏州','南京'],['广州','深圳'],['宁波','杭州']],
   index =['江苏','广东','浙江'],columns=['城市1','城市2'])                      
   df2 = pd.DataFrame([['赣州','南昌'],['成都','泸州'],['宁波','杭州']],
   index =['江西','四川','浙江'],columns=['城市1','城市2'])
   print("concat Dataframe:\n",pd.concat([df1,df2],axis=0,keys=['数据1','数据2']))
   print("concat Dataframe:\n",pd.concat([df1,df2],axis=1,keys=['数据1','数据2']))


输出

concat:
苏州    1
南京    2
广州    3
深圳    4
宁波    5
杭州    6
dtype: int64
concat use key:
江苏  苏州   1
      南京    2
广东  广州   3
      深圳    4
浙江  宁波   5
      杭州    6
dtype: int64
concatDataframe:
        城市1 城市2
数据1 江苏  苏州  南京
      广东  广州 深圳
      浙江  宁波 杭州
数据2 江西  赣州  南昌
      四川  成都 泸州
      浙江  宁波 杭州
concatDataframe:
       数据1         数据2    
       城市1  城市2 城市1  城市2
江苏   苏州  南京  NaN    NaN
广东   广州  深圳  NaN    NaN
浙江   宁波  杭州  宁波   杭州
江西   NaN    NaN  赣州   南昌
四川   NaN    NaN  成都   泸州


2.3重塑和轴向旋转

#2.3.1 轴向旋转
def pivot_data():
  df = pd.DataFrame([{"编号":"1","姓名":"Jerry","科目":"语文","成绩":"92"},
                  {"编号":"1","姓名":"Jerry","科目":"数学","成绩":"97"},
                  {"编号":"2","姓名":"Tom","科目":"语文","成绩":"100"},
                  {"编号":"2","姓名":"Tom","科目":"数学","成绩":"91"}])
  print("df is:\n",df)
  print("df stack is:\n",df.stack())
  print("df unstack is:\n",df.unstack())
  print("df pivot is:\n",df.pivot('编号','科目','成绩'))
  print("set_index and unstack  is:\n",df.set_index(['编号','科目']).unstack())


输出

df is:
   编号     姓名  科目  成绩
0  1       Jerry  语文  92
1  1       Jerry  数学  97
2  2       Tom    语文 100
3  2       Tom    数学  91
df stack is:
0  编号       1
   姓名       Jerry
   科目       语文
   成绩       92
1  编号       1
   姓名       Jerry
   科目       数学
   成绩       97
2  编号       2
   姓名       Tom
   科目       语文
   成绩      100
3  编号       2
   姓名       Tom
   科目       数学
   成绩       91
dtype: object
df unstack is:
编号0       1
    1       1
    2       2
    3       2
姓名0    Jerry
    1    Jerry
    2    Tom
    3    Tom
科目0      语文
    1      数学
    2      语文
    3      数学
成绩0      92
    1      97
    2      100
    3      91
dtype: object
df pivot is:
科目  数学  语文
编号        
1     97    92
2     91    100
set_index andunstack is:
        姓名         成绩    
科目     数学   语文  数学  语文
编号                      
1       Jerry  Jerry  97   92
2       Tom    Tom    91  100


#2.3.2 重塑
def  melt_data():
   df = pd.DataFrame({'属性':['编号','年龄','手机'],
 '张三':['1',54,'13681766555'],
 '李四':['2',32,'13966564433'],
 '王五':['3',48,'18977665643']
                     })
   print("df is:\n",df)
   melt_res = pd.melt(df,['属性'])
   print("melt:\n",melt_res)
   print("pivot:\n",melt_res.pivot('属性','variable','value'))


输出

df is:
    属性  张三            李四           王五
0    1                   2             3
1   年龄  54             32            48
2   手机  13681766555    13966564433   18977665643
melt:
   属性       variable          value
0  编号       张三              1
1  年龄       张三              54
2  手机       张三              13681766555
3  编号       李四              2
4  年龄       李四              32
5  手机       李四              13966564433
6  编号       王五              3
7  年龄       王五              48
8  手机       王五              18977665643
pivot:
variable      张三           李四           王五
属性                                            
年龄        54           32           48
手机        13681766555  13966564433 18977665643
编号        1            2            3


if  __name__=="__main__":
    data_info()
    change_type()
    judge_is_null()
    replace_null()
    is_duplicate()
    drop_duplicate()
    data_type_transfer()
    data_replace()
    data_categories()
    data_filter()
    str_deal()
    data_index()
    merge_data()
    join_data()
    concat_data()
    pivot_data()
     melt_data()

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


软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
19天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
25 6
|
21天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
26 1
|
2月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
745 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
26天前
|
机器学习/深度学习 数据采集 人工智能
自动化测试的未来:AI与机器学习的融合之路
【10月更文挑战第41天】随着技术的快速发展,软件测试领域正经历一场由人工智能和机器学习驱动的革命。本文将探讨这一趋势如何改变测试流程、提高测试效率以及未来可能带来的挑战和机遇。我们将通过具体案例分析,揭示AI和ML在自动化测试中的应用现状及其潜力。
34 0
|
2月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
115 1
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
72 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
130 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
263 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
2月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
62 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
7月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
249 14