Dataframe 操作 – 第二部分

作者 : 慕源网 本文共5944个字,预计阅读时间需要15分钟 发布时间: 2021-10-7 共473人阅读

介绍

到目前为止,我们已经在 Pandas 中学到了很多概念:
在我之前的文章中,DataFrame 操作的第 1 部分,我们了解了一些操作,例如二元操作、检查函数、检索头尾行和迭代。
现在我们剩下的是组合DataFrames和聚合函数。所以,让我们现在深入研究它们:

组合DataFrames

我们了解了各种组合方法:
  • combine_first()
  • concat()
  • merge()
combine_first()
顾名思义-combine_first,它使用Patching方法组合2个DataFrames。
如果在一个 dataFrame 中缺少某个值,而另一个 dataFrame 的相应单元格有有效数据,则 Patching 就起作用了。它修补第一个DataFrames中的值;因此,combine_first。
句法
dataFrame1.combine_first(dataFrame2)
import pandas as pd      
      
dict1= {'A':[85,73,None], 'B':[60,None,58], 'C':[90,60,74], 'D': [95,87,92] }      
      
df1=pd.DataFrame(dict1,index=['0','1','2'])      
print("This is df1:")      
print(df1)      
print('\n')      
      
dict2= {'A':[85,73,98], 'B':[60,80,58], 'C':[None,60,74], 'D': [95,87,None] }      
      
df2=pd.DataFrame(dict2,index=['0','1','2'])      
print("This is df2:")      
print(df2)      
print('\n')      
      
print("Using combine_first()")    
print("Combined Dataframe:")    
print(df1.combine_first(df2))   

输出

concat()
此方法连接DataFrames而不考虑其值,即使缺少值,它也会连接DataFrames并将输出作为单个DataFrames提供。
句法
concat([dataFrame1,dataFrame2])
import pandas as pd      
      
dict1= {'A':[85,73,None], 'B':[60,None,58], 'C':[90,60,74], 'D': [95,87,92] }      
      
df1=pd.DataFrame(dict1,index=['0','1','2'])      
print("This is df1:")      
print(df1)      
print('\n')      
      
dict2= {'A':[85,73,98], 'B':[60,80,58], 'C':[None,60,74], 'D': [95,87,None] }      
      
df2=pd.DataFrame(dict2,index=['0','1','2'])      
print("This is df2:")      
print(df2)      
print('\n')      
      
print("Using concat()")      
print("Combined Dataframe:")    
print(pd.concat([df1,df2]))    

输出

merge()
如果两个不同的DataFrames有一个公共列(与数据库中的外键概念相同),那么如果我们合并这两个DataFrames,我们将在单个DataFrames中获得 dataFrame1 和 dataFrame2 的所有列作为输出。
如果2个dataFrame中没有common列,则merge()不能使用,报错。
句法
merge[dataFrame1,dataFrame2)
import pandas as pd    
    
dict1= {'ID':[85,73,99], 'Name':["Alpha","Beta","Gamma"], 'Course':[909,606,741], 'Marks': [95,87,92] }    
    
df1=pd.DataFrame(dict1,index=['0','1','2'])    
print("This is df1:")    
print(df1)    
print('\n')    
    
dict2= {'ID':[85,73,99], 'Course_ID':[6000,8000,5800] }    
    
df2=pd.DataFrame(dict2,index=['0','1','2'])    
    
print("This is df2:")    
print(df2)    
print('\n')    
    
print("Using merge()")        
print("Combined Dataframe:")    
print(pd.merge(df1,df2))   

输出

聚合函数

现在我们将了解各种聚合函数:
  • min()
  • max()
  • count()
  • sum()
  • mad()
  • quantile()
min()
  • 顾名思义,此方法提DataFrames中的最小值。
  • 它包含3个参数:

    1. axis – 可以取 0 或 1。’0′ 代表按列分隔,’1′ 代表按行。如果您未提及任何axis,则默认值为“0”。
    2.skipna-它可以是“真”或“假”。如果您不想跳过 NA 值,请设置skipna=’false’。默认值为“真”。
    3. numeric_only – 它可以是“真”或“假”。如果您不只使用数值进行分隔,则设置numeric_only=’false’。默认值为“真”

  • 如果您想要按列的最小值,请使用:  dataFrame.min(axis=1)dataFrame.min(axis=’columns’)
  • 如果您想要逐行最小值,请使用:  dataFrame.min()dataFrame.min(axis=0)dataFrame.min(axis=’index’)

句法

dataFrame.min(axis=0, skipna=’true’,numeric_only=’true’)
import pandas as pd    
    
dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] }    
    
df=pd.DataFrame(dict,index=['2018','2019','2020'])    
print(df)    
print('\n')    
    
print("Minimun row wise:")    
print(df.min())    
print('\n')    
    
print("Minimun column wise:")    
print(df.min(axis=1))    

输出

max()
  • 顾名思义,此方法提取DataFrames中的最大值。
  • 它还包含 3 个参数(与 min() 相同)句法
    dataFrame.max(axis=0, skipna=’true’,numeric_only=’true’)

     

  • 如果您想要按列的最大值,请使用:dataFrame.max(axis=1)dataFrame.min(axis=’columns’)
  • 如果你想要逐行最大值,请使用: dataFrame.max(axis=0)ordataFrame.max() ordataFrame.max(axis=’index’)
import pandas as pd    
    
dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] }    
    
df=pd.DataFrame(dict,index=['2018','2019','2020'])    
    
print(df)    
print('\n')    
    
print("Maximum row wise:")    
print(df.max())    
print('\n')    
    
print("Maximum column wise:")    
print(df.max(axis=1))    

输出

count()
  • 顾名思义,此方法获取 dataFrame 中的条目数。
  • 它还包含 3 个参数(与 min() 相同)句法
    dataFrame.count(axis=0, skipna=’true’,numeric_only=’true’)

     

  • 如果您想要按列计数,请使用:dataFrame.count(1)dataFrame.count(axis=’columns’)
  • 如果您想要按行计数,请使用: dataFrame.count(0)ordataFrame.count()ordataFrame.count(axis=’index’)
import pandas as pd    
    
dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] }    
    
df=pd.DataFrame(dict,index=['2018','2019','2020'])    
print(df)    
print('\n')    
    
print("Row-wise count:")    
print(df.count())    
print('\n')    
    
print("Column-wise count:")    
print(df.count(1))   

输出

sum()
  • 顾名思义,此方法获取 dataFrame 中条目的总和。
  • 它还包含 3 个参数(与 min() 相同)语法
    dataFrame.sum(axis=0, skipna=’true’,numeric_only=’true’)

     

  • 如果您想要按列求和,请使用:dataFrame.sum(1)dataFrame.sum(axis=’columns’)
  • 如果要按行求和,请使用:dataFrame.sum(0)dataFrame.sum()dataFrame.sum(axis=’index’)
import pandas as pd    
    
dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] }    
    
df=pd.DataFrame(dict,index=['2018','2019','2020'])    
print(df)    
print('\n')    
    
print("Row-wise sum:")    
print(df.sum())    
print('\n')    
    
print("Column-wise sum:")    
print(df.sum(1))   

输出

mad()
  • MAD 代表平均绝对偏差。
  • 它还有3个参数(axis、skipna、numeric_only),这些参数的详细信息可以参考min()。语法
    dataFrame.mad(axis=0, skipna=’true’,numeric_only=’true’)

     

  • 如果您想要按列平均绝对偏差,请使用:dataFrame.mad(axis=1)dataFrame.mad(axis=’columns’)
  • 如果您想要逐行平均绝对偏差,请使用:dataFrame.mad(axis=0)dataFrame.mad()dataFrame.mad(axis=’index’)
import pandas as pd    
    
dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] }    
    
df=pd.DataFrame(dict,index=['2018','2019','2020'])    
print(df)    
print('\n')    
    
print("Row-wise:")    
print(df.mad())    
print('\n')    
    
print("Column-wise:")    
print(df.mad(1))    

输出

quantile()
  • Quantiles 是分布中与该分布中值的排名顺序相关的点。
  • 简而言之,概率分布的范围为具有相等概率的连续区间。
  • 值的分位数是小于或等于这些值的观测值的分数。
  • quantile() 有 4 个参数:
    • q- 此参数确定要对DataFrames完成的分位数百分比。
    • axis(0 or 1)
    • numeric_only(true or false)
    • interpolation ——它是在一组离散的已知数据点的范围内构建新的数据点。
  • q 是范围 [0.25,0.75,0.5,1.0] 的参数,默认值为 0.5(分位数的 50%)。并记住 0 < q <= 1
  • 如果 q 是一个数组,则返回一个DataFrames。
  • 如果 q 是float ,则返回一个series 。
  • 插值参数可以与这些值一起使用: [‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’]语法
    dataFrame.quantile(q=0.5,axis=0, numeric_only=’true’,interpolation =’linear’)

     

  • 如果您想要按列分位数,请使用:dataFrame.quantile(axis=1 ) 或dataFrame.quantile(axis=’columns’)
  • 如果您想要逐行平均绝对偏差,请使用:dataFrame.quantile(axis=0)dataFrame.quantile()dataFrame.quantile(axis=’index’)
import pandas as pd      
      
dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] }      
      
df=pd.DataFrame(dict,index=['2018','2019','2020'])      
print(df)      
print('\n')      
      
print("Row-wise:")      
print(df.quantile())      
print('\n')      
      
print("Column-wise:")      
print(df.quantile(1))      
print('\n')      
      
print("Quantile with 0.25 value(Row-wise):")      
print(df.quantile(q=0.25,axis=0,numeric_only='true'))

输出

概括

在本文中,我们讨论了组合DataFrames的各种方法,还了解了聚合函数。我希望这能帮助读者了解如何使用和实现 Pandas。现在,您可以处理数据、创建自己的dataframes并开始分析。
我的 PANDAS 系列到此结束。
非常欢迎与本文相关的反馈或查询。
谢谢阅读!!

慕源网 » Dataframe 操作 – 第二部分

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录