数据集笔记:分析OpenCellID 不同radio/ create_time update_time可视化

1 读取数据

(以新加坡的cellID为例)

复制代码
import geopandas as gpd
import pandas as pd

opencellid=pd.read_csv('OpenCellID_SG.csv',header=None,
            names=['radio','mcc','net','area','cell','unit',
                  'lon','lat','range','samples','changeable1',
                  'created1','updated','AveSignal'])
opencellid

2 不同radio的比例

python 复制代码
radio_gather=opencellid.groupby('radio').size()
radio_gather
'''
radio
GSM     10875
LTE     59369
NR        372
UMTS    61726
Name: mcc, dtype: int64
'''
python 复制代码
import matplotlib.pyplot as plt

plt.pie(radio_gather,labels=radio_gather.index)

3 created1 & update

3.1 unix时间戳 转 datetime

python 复制代码
opencellid['created1']=pd.to_datetime(opencellid['created1'],unit='s')
opencellid['updated']=pd.to_datetime(opencellid['updated'],unit='s')
opencellid

3.2 datetime截断到年

python 复制代码
opencellid['created_year'] = opencellid['created1'].dt.year
opencellid['updated_year'] = opencellid['updated'].dt.year
opencellid

3.3 根据年份和radio聚合

python 复制代码
created_grouped = opencellid.groupby(['created_year', 'radio']).size().reset_index(name='count')
created_grouped
python 复制代码
updated_grouped = opencellid.groupby(['updated_year', 'radio']).size().reset_index(name='count')
updated_grouped

3.4 创建数据透视表

pandas 笔记:pivot_table 数据透视表\pivot_UQI-LIUWJ的博客-CSDN博客

python 复制代码
created_pivot=created_grouped.pivot(index='created_year',
                      columns='radio',
                      values='count'
                     )
created_pivot
python 复制代码
created_pivot=created_pivot.fillna(0).reset_index()
created_pivot
python 复制代码
updated_pivot=updated_grouped.pivot(index='updated_year',
                      columns='radio',
                      values='count'
                     )
updated_pivot=updated_pivot.fillna(0).reset_index()
updated_pivot

3.5 绘制柱状图

python 复制代码
from pyecharts.charts import Bar, Grid
from pyecharts import options as opts

bar_created = (
    Bar(init_opts=opts.InitOpts(width='2000px'))
    .add_xaxis(created_pivot['created_year'].astype(str).tolist())
    .add_yaxis("GSM", created_pivot['GSM'].tolist())
    .add_yaxis("LTE", created_pivot['LTE'].tolist())
    .add_yaxis("NR", created_pivot['NR'].tolist())
    .add_yaxis("UMTS", created_pivot['UMTS'].tolist())
    .set_global_opts(title_opts=opts.TitleOpts(title="Count of Created Radio Types per Year"))
)
'''
init_opts=opts.InitOpts(width='2000px') 设置柱状图的宽度
'''

bar_updated = (
    Bar(init_opts=opts.InitOpts(width='2000px'))  # Set chart width
    .add_xaxis(updated_pivot['updated_year'].astype(str).tolist())
    .add_yaxis("GSM", updated_pivot['GSM'].tolist())
    .add_yaxis("LTE", updated_pivot['LTE'].tolist())
    .add_yaxis("NR", updated_pivot['NR'].tolist())
    .add_yaxis("UMTS", updated_pivot['UMTS'].tolist())
    .set_global_opts(title_opts=opts.TitleOpts(title="Count of Updated Radio Types per Year", pos_top="50%"))
)
#pos_top="50%" 设置第二张图title的位置

# Creating a Grid
grid = (
    Grid(init_opts=opts.InitOpts(width='2000px'))
    .add(bar_created, grid_opts=opts.GridOpts(pos_bottom="60%"))
    .add(bar_updated, grid_opts=opts.GridOpts(pos_top="60%"))
)
#两张图叠起来

# Save the grid as a .html file
grid.render("combined_chart.html")
相关推荐
LinXunFeng3 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
闪闪发亮的小星星8 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq8 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
阿米亚波8 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
自传.8 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding
.千余8 天前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
自传.8 天前
尚硅谷 Vibe Coding|第二章 AI编程工具生态 学习笔记
笔记·学习·ai编程·尚硅谷·vibe coding
秋波。未央8 天前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习
中屹指纹浏览器8 天前
2026指纹浏览器字体指纹、字体渲染偏差检测与全维度虚拟字体池搭建方案
经验分享·笔记