README.md 3.2 KB
Newer Older
Mr·小鱼's avatar
Mr·小鱼 已提交
1 2
#以下此代码和其它代码区别不大,完整代码在subway_get.py和subway_analysis.py文件中。

Mr·小鱼's avatar
Mr·小鱼 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
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()
Mr·小鱼's avatar
Mr·小鱼 已提交
42

Mr·小鱼's avatar
Mr·小鱼 已提交
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

#问题:统计各个城市的大学数量,然后利用回归图进行拟合(分析各个城市的大学数量与站点数量的关系
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()