连接数据库并读取下载数据,用读取到的数据,然后导出至本地,并且在数据库中也创建一个用户最大连续表用读取到的数据,筛选出每个用户的最大连续登陆天数,然后导出至本地,并且在数据库中也创建一个用户最大连续表。
使用pymsql和sqlalchemy库结合着pandas导出dataframe至数据库的方法,如果后期需要追加导入数据,可以将原先数据读出和现有数据进行上下合并,再重新导入。
import json#探索数据的结构
filename = 'data/1.json'
with open(filename) as f:
all_eq_data = json.load(f) #存储进去一个json数据对象
'''
readable_file = 'data/readable_eq_data.json' #创建一个文件对象
with open(readable_file,'w') as f:
json.dump(all_eq_data,f,indent = 4) #接受一个json数据对象和文件对象 indent缩进
'''
all_eq_dicts = all_eq_data['features'] #提取键"features"数据并储存
mags,titles,lons,lats= [],[],[],[]
for eq_dict in all_eq_dicts:
mag = eq_dict['properties']['mag'] #每次地震震级存储在'properties'部分的'mag'下
title = eq_dict['properties']['title'] #存储title
lon = eq_dict['geometry']['coordinates'][0]
lat = eq_dict['geometry']['coordinates'][1]
mags.append(mag)
titles.append(title)
lons.append(lon)
lats.append(lat)
print(mags[:10]) #提取震级
#print(len(all_eq_dicts)) #提取所有地震的次数
print(titles[:2])
print(lons[:5])
print(lats[:5])
绘制震级散点图:
import plotly.express as px
fig = px.scatter(
x = lons,
y = lats,
labels = {'x':'经度','y':'纬度'},
range_x = [-200,200]
range_y = [-90,90]
width = 800,
height = 800,
title = '全球地震散点图'
)
fig.write_html('global_earthquakes.html') #保存文件
fig.show() #显示
另一种指定图标数据的方式:
import pandas as pd
data = pd.DataFrame(
data = zip(lons,lats,titles,mags),columns = ['经度','纬度','位置','震级'] #封装数据
)
data.head()
然后参数配置方式可以从:
x = lons,
y = lats,
labels = {'x':'经度','y':'纬度'},
变更为:
data,
x = '经度'
y = '纬度'
……
size = '震级',
size_max = 10, #默认20
color = '震级', #标记颜色 蓝<红<黄
hover_name = '位置', #添加鼠标指向时显示的文本
1、Matplotlib:用于创建二维图和图形的底层库,有了它的帮助,你可以构建各种不同的图标,从直方图到散点图再到费笛卡尔坐标图,它都可以与很多流行的绘图库结合使用。
2、Seaborn:包含更适合处理图标的默认设置,此外还有丰富的可视化库,包含一些复杂类型,比如说时间序列、联合分布图等。
3、Plotly:一个很流行的库,可以让你轻松构建复杂的图形,该软件包含用于交互式web应用程,可实现轮廓图、三元图以及三维图等效果。
4、Pydot:纯Python编写的Graphviz接口,经常用于生产复杂的定向图和无向图,能够显示图形的结构,构建神经网络和基于决策树的算法是非常有效。
5、pyecharts:功能非常强大,支持多达400+地图,支持JupyterNotebook、JupyterLab,可以集成Flask,Sanic,Django等主流Web框架。
6、cufflinks:结合了plotly的强大功能和panda的灵活性,可以方便地进行绘图,避免了数据可视化过程中,对数据存储结构和数据类型进行复杂的麻烦。