#以下此代码和其它代码区别不大,完整代码在subway_get.py和subway_analysis.py文件中。 from wordcloud import WordCloud, ImageColorGenerator from pyecharts import Line, Bar, Geo import matplotlib.pyplot as plt import pandas as pd import numpy as np import seaborn as sns import jieba plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签 plt.rcParams['axes.unicode_minus']=False # 设置正常显示符号 # 设置列名与数据对齐 pd.set_option('display.unicode.ambiguous_as_wide', True) pd.set_option('display.unicode.east_asian_width', True) # 显示10行 pd.set_option('display.max_rows', 10) # 读取数据 df = pd.read_csv('../data/data-analyselesson/subway.csv', header=None, names=['city', 'line', 'station'], encoding='gbk') # print(type(df)) print(df.info()) print(df.head()) ck_df=df.isnull().sum().sort_values(ascending=False) print(ck_df) # 统计各个城市地铁线路情况 df_line = df.groupby(['city', 'line']).count().reset_index() print(df_line) df_1=df_line.sort_values(by='station', ascending=False) df_2=df_1.groupby('city')['station'].max().reset_index(drop=False)#保留索引 line_station_c=df_2.sort_values(by='station',ascending=False) # line_station_c.to_csv("../1.csv",header=False,index=False) plt.figure(figsize=(15,5)) labelline=list(line_station_c['city']) # line_text=pd.merge(left=line_station_c,right=df_1,on=['city','station'],how='inner') # line_text.to_csv("../2.csv",header=False,index=False) labelline=labelline#+line_text['line'].map(str) plt.xlabel('城市') plt.ylabel('站点数量') plt.bar([i for i in labelline],line_station_c['station']) plt.title('每个城市哪条线路的站点数最多') plt.show() plt.close() #问题:统计各个城市的大学数量,然后利用回归图进行拟合(分析各个城市的大学数量与站点数量的关系 df_uni= pd.read_csv('../university.csv', header=None, names=['city', 'uni_count'], encoding='gbk') df_uni=pd.merge(left=line_station_c,right=df_uni,on='city',how='inner') #将两个表格中的数据基于city列进行内连接。 x=df_uni['uni_count'] y=df_uni['station'] sns.regplot(x=x,y=y,color='b') plt.title('分析各个城市的大学数量与站点数量的关系') plt.show() plt.close() #散点图 fig=plt.figure(figsize=(10,7)) plt.xlabel('站点数量') plt.ylabel('大学数量') plt.title('各个城市的大学数量与站点数量的关系') plt.scatter(x=x,y=y,cmap='b',marker='*',alpha=0.8) plt.grid() plt.show() plt.close() #seaborn的双变量图:可以查看多变量之间的分布关系,也可以显示它本身的单变量情况 df_s=df_uni sns.jointplot(x='uni_count',y='station',data=df_s) plt.show() plt.close() #全国各城市的总的换乘站点数量(2换乘、3换乘、4换乘等)分布统计 df_1=df.groupby(['city','station']).count().reset_index() print(df_1) df_1=df_1[df_1['line']>1]#筛选出来全国的换乘站点数 tran_sit=df_1.groupby('line').count().reset_index() #保留原索引,但是值是count()函数计数之后的值 plt.figure(figsize=(10,5)) plt.xlabel('站点可换乘等级') plt.ylabel('站点数量') plt.bar(tran_sit['line'],tran_sit['station'],color='g') plt.title('全国各城市总的换乘站点数量(2换乘、3换乘、4换乘等)分布统计') plt.show()