python小练习之航空公司数据练习题(二)
2020-06-28 11:50:51 来源:易采站长站 作者:易采站长站整理
arr1_na = flights[(flights['arr_delay'].isnull())] arr1_na = arr1_na[arr1_na['arr_time']-arr1_na['sched_arr_time'] >= 100] #从arr_delay缺失数据汇总选择延误大于1小时的
arr1_all = pd.concat((arr1,arr1_na), axis=0) #整合延误数据
arr1_all['is_duplicate'] = arr1_all.duplicated(['tailnum'])
tail_list = arr1_all[arr1_all['is_duplicate'] == False] #从所有延误一小时的航班中寻找飞机第一次延误1小时的航班
tail_list_date = tail_list[['tailnum','time_hour']] #仅保存飞机尾号与航班日期信息
orgin = flights
expand_list = pd.merge(orgin, tail_list_date, on = 'tailnum', how = 'left') #将飞机尾号与航班日期与原数据表进行左连接
tail_num = expand_list[expand_list['time_hour_x'] = 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 = ['目的地', '航空公司']
return answer
def question4(self, flights):
"""
要求:判断一架飞机是否从属于一个航空公司
思路:首先对航空公司与飞机尾号进行去重,然后这是飞机尾号只属于一个公司,那么对飞机尾号进行去重,应当无重复出现。
"""
data = flights
data['duplicated'] = data.duplicated(['tailnum', 'carrier']) #对飞机尾号与航空公司去重
tail_carrier = data[data['duplicated'] == False] tail_carrier['tail_duplicated'] = tail_carrier.duplicated(['tailnum']) #对飞机尾号进行去重
answer = tail_carrier[tail_carrier['tail_duplicated'] == True]
return answer
if __name__ == "__main__":
pd.set_option('display.max_columns',10)
pd.set_option('display.max_columns',5)
pd.set_option('expand_frame_repr', False)
#显示所有行
homework = homework_2nd()
flights = homework.load_data()
Q1_a = homework.question1_a(flights)
print("n第一题的问题a:")
print("到达延误两小时的航班有%d次"%Q1_a.shape[0])
print(Q1_a)
print("-"*20)
Q1_b = homework.question1_b(flights)
print("n第一题的问题b:")
print("飞往HOU与IAH的航班有%d次"%Q1_b.shape[0])
print(Q1_b)
print("-"*20)
Q1_c = homework.question1_c(flights)
print("n第一题的问题c:")
print("联合航空、美利坚航空、三角洲航空公司的航班有%d次"%Q1_c.shape[0])













闽公网安备 35020302000061号