Dataframe 操作 – 第二部分
介绍
到目前为止,我们已经在 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 系列到此结束。
非常欢迎与本文相关的反馈或查询。
谢谢阅读!!
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!