<
>

python小练习之航空公司数据练习题(二)

2020-06-28 11:50:51 来源:易采站长站 作者:易采站长站整理


tail_num = expand_list[expand_list['time_hour_x'] < expand_list['time_hour_y']] #寻找出发时间在一次延误时间之前的航班
answer = pd.DataFrame(tail_num.loc[:, 'tailnum'].value_counts()) #统计每个航班出现次数
answer.iloc[:5]
tailnum
N274JB346
N324JB324
N247JB317
N354JB312
N304JB305

"""
方法二
利用groupby将每个飞机进行区分,然后按照时间顺序排序,统计什么时候遇到延误大于60分钟的就结束
(这里因为懒就没有考虑arr_delay的缺失值)
"""
sss = flights.sort_values('time_hour', ascending=True)
ssd = sss.groupby(['tailnum'])
l = []for name, grouped in ssd:
mean1 = ssd.get_group(name)
count = 0
for time in mean1['arr_delay']:
if time <= 60:
count += 1
else:
break
l.append((name, count))
ll = pd.DataFrame(l)
ll.columns = ['tailnum','times']ll.iloc[:5]

tailnumtimes
0D942DN0
1N0EGMQ38
2N101569
3N102UW25
4N103US46

问题3
找到至少两个航空公司直达的目的地,并且对该目的地根据航班数对航空公司进行排序

data = flights
data['num'] = pd.DataFrame(np.ones(flights.shape[0]).reshape(-1,1)) #增加一个用于计数的列
dest = data.groupby(['dest']) #按照dest进行分组

k = []for index, data in dest:
if len(data['carrier'].unique()) >= 2: #判断目的地是否有大于两个航空公司直达
data_sum = data.groupby(['carrier']).sum() #计算直达的公司数量求和
data_sum = data_sum.sort_values('num', ascending=False) #按照计数项进行排序
k.append((index, list(data_sum.index))) #储存目的地,与航空公司名
answer = pd.DataFrame(k)
answer.columns = ['目的地', '航空公司']answer.iloc[:5]


目的地航空公司
0ATL[DL, FL, MQ, EV, UA, 9E, WN]1AUS[B6, UA, AA, DL, WN, 9E]2AVL[EV, 9E]3BDL[EV, UA]4BGR[EV, 9E]

问题4
验证是否每架飞机只属于一个航空公司

"""
要求:判断一架飞机是否从属于一个航空公司
思路:首先对航空公司与飞机尾号进行去重,然后这是飞机尾号只属于一个公司,那么对飞机尾号进行去重,应当无重复出现。
"""

data = flights
data['duplicated'] = data.duplicated(['tailnum', 'carrier']) #对飞机尾号与航空公司去重
tail_carrier = data[data['duplicated'] == False]tail_carrier['tail_duplicated'] = tail_carrier.duplicated(['tailnum']) #对飞机尾号进行去重

暂时禁止评论

微信扫一扫

易采站长站微信账号