数据处理涉及以各种格式处理数据,例如合并,分组,连接等,以便分析或准备将其与另一组数据一起使用。 python具有内置函数功能,可将这些争议方法应用于各种数据集以实现分析目标。 在本章中,我们将看几个基于这些方法的例子。
python中的pandas库提供了一个函数merge
,作为dataframe
对象之间所有标准数据库连接操作的入口 -
pd.merge(left, right, how='inner', on=none, left_on=none, right_on=none,
left_index=false, right_index=false, sort=true)
现在创建两个不同的dataframe
并对其执行合并操作。
# import the pandas library
import pandas as pd
left = pd.dataframe({
'id':[1,2,3,4,5],
'name': ['alex', 'amy', 'allen', 'alice', 'ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.dataframe(
{'id':[1,2,3,4,5],
'name': ['billy', 'brian', 'bran', 'bryce', 'betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print (left)
print (right)
执行上面示例代码,得到以下结果 -
name id subject_id
0 alex 1 sub1
1 amy 2 sub2
2 allen 3 sub4
3 alice 4 sub6
4 ayoung 5 sub5
name id subject_id
0 billy 1 sub2
1 brian 2 sub4
2 bran 3 sub3
3 bryce 4 sub6
4 betty 5 sub5
数据分析中经常需要对数据集进行分组,因为我们需要根据数据集中存在的各个组的结果进行分析。 panadas具有内置的方法,可以将数据转换为各种分组。
在下面的示例中,我们按年分组数据,然后获得特定年份的结果。
# import the pandas library
import pandas as pd
ipl_data = {'team': ['riders', 'riders', 'devils', 'devils', 'kings',
'kings', 'kings', 'kings', 'riders', 'royals', 'royals', 'riders'],
'rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.dataframe(ipl_data)
grouped = df.groupby('year')
print (grouped.get_group(2014))
执行上面示例代码,得到以下结果 -
points rank team year
0 876 1 riders 2014
2 863 2 devils 2014
4 741 3 kings 2014
9 701 4 royals 2014
pandas提供了各种功能,可以轻松地将series
,dataframe
和panel
对象组合在一起。 在下面的例子中,concat
函数沿轴执行串联操作。创建不同的对象并进行连接。
import pandas as pd
one = pd.dataframe({
'name': ['alex', 'amy', 'allen', 'alice', 'ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.dataframe({
'name': ['billy', 'brian', 'bran', 'bryce', 'betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print (pd.concat([one,two]))
执行上面示例代码,得到以下结果 -
marks_scored name subject_id
1 98 alex sub1
2 90 amy sub2
3 87 allen sub4
4 69 alice sub6
5 78 ayoung sub5
1 89 billy sub2
2 80 brian sub4
3 79 bran sub3
4 97 bryce sub6
5 88 betty sub5