机器学习测试笔记(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进行规格选择与性能压测。
目录
相关文章
|
27天前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
249 2
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
23天前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
27天前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
47 1
|
27天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
50 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
27天前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
73 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
27天前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
153 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
27天前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
42 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
18天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
26天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
50 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
下一篇
无影云桌面