博客
关于我
python pandas相关知识点(练习)
阅读量:802 次
发布时间:2023-03-06

本文共 6596 字,大约阅读时间需要 21 分钟。

数据处理与可视化分析实践案例

1. 数据引入与初步处理

我们首先引入必要的库文件,并对数据进行读取和初步处理。以下是代码示例:

import pandas as pdimport numpy as npdata_Base = pd.read_csv("D:\\Exam_Test\\unicomapp_r0_201904_jinan.csv")# data_Ite = pd.read_csv("D:\\Exam_Test\\lte_cm_jinan.csv", encoding="gbk")data_Base.shape

2. 数据信息展示

接下来,我们可以查看数据的基本信息,包括行数和列数:

print("行数{0}, 列数{1}".format(str(data_Base.shape[0]), str(data_Base.shape[1])))

此外,我们还可以检查字段中的空值数量:

data_Base.isnull().sum()

3. 数据清洗与筛选

在数据清洗过程中,我们可以选择删除含空值的行:

data_Base.dropna(subset=["L-CELLID"], inplace=True)

4. 数据统计与可视化

为了更直观地了解数据分布,我们可以绘制柱状图:

from pyecharts import options as optsfrom pyecharts.charts import Bardef bar_base():    c = (        Bar()        .add_xaxis(list(data_Base["L-SINR"].value_counts().sort_index().reset_index()["index"]))        .add_yaxis("SINR样本", list(data_Base["L-SINR"].value_counts().sort_index().reset_index()["L-SINR"]), label_opts=opts.LabelOpts(is_show=False))        .set_global_opts(            title_opts=opts.TitleOpts(title="SINR 样本分布", pos_left="center"),            legend_opts=opts.LegendOpts(is_show=True, pos_left="right"),        )    )    return cbar_base().render("L_SINR 分布.html")

5. 数据筛选与格式设置

我们可以根据需求筛选特定值:

data_Base = data_Base[~data_Base["L-SINR"].isin(["1"])]data_Base.shape

为了方便查看,我们可以设置最大显示列数:

pd.set_option("display.max_columns", 3000)

6. 数据索引与时间处理

为方便后续分析,我们可以设置索引列:

data_Base = data_Base.set_index("RECTIME")

此外,我们可以对时间数据进行重采样:

data_Apr = data_Base.resample("D").mean().reset_index()data_Apr

7. 条件判断与邮件发送

根据特定条件,我们可以筛选满足条件的数据:

condition1 = df_cm_new["样本量"] > 100condition2 = df_cm_new["RSRP > -110 采样点占比"] > 0.8condition3 = df_cm_new["SINR > 0 采样点占比"] < 0.7df_cm_new = df_cm_new[condition1 & condition2 & condition3]df_cm_new.head()

如果需要发送邮件,可以使用以下代码:

import smtplibfrom email.mime.text import MIMETextmail_host = "smtp.qq.com"mail_user = "597945025@qq.com"mail_pass = "cwtytropotbubgai"sender = '597945025@qq.com'receivers = ['625645840@qq.com']message = MIMEMultipart()message['From'] = Header(sender, 'utf-8')message['To'] = Header(str(receivers), 'utf-8')subject = 'mail test'message['Subject'] = Header(subject, 'utf-8')message.attach(MIMEText('这是邮箱测试,请查收', 'plain', 'utf-8'))try:    smtpObj = smtplib.SMTP()    smtpObj.connect(mail_host, 25)    smtpObj.login(mail_user, mail_pass)    smtpObj.sendmail(sender, receivers, message.as_string())    print("邮件发送成功")except smtplib.SMTPException:    print("Error: 无法发送邮件")

8. 地图展示与数据处理

我们可以绘制济南各区县的网络覆盖分布图:

from pyecharts.charts import Mapfrom pyecharts.charts import Pagefrom pyecharts import options as optscity = df_last["City2"]val_min_rsrp, val_max_rsrp = df_last["RSRP > -110 采样点占比"].min().round(2), df_last["RSRP > -110 采样点占比"].max().round(2)val_min_sinr, val_max_sinr = df_last["SINR > 0 采样点占比"].min().round(2), df_last["SINR > 0 采样点占比"].max().round(2)visual_color = ['#df2f48', '#dfa59b', '#1c39ca', '#80d327']def map_left():    c = (        Map()        .add("", [list(z) for z in zip(list(city), list(df_last["RSRP > -110 采样点占比"]))], "济南")        .set_global_opts(            title_opts=opts.TitleOpts(title="济南各区县4G网络良好覆盖(RSRP > -110)比例分布图", pos_left="center"),            visualmap_opts=opts.VisualMapOpts(min_=val_min_rsrp, max_=val_max_rsrp, range_color=visual_color),            tooltip_opts=opts.TooltipOpts(formatter="{b}:{c} %")        )    )    return cdef map_right():    c = (        Map()        .add("", [list(z) for z in zip(list(city), list(df_last["SINR > 0 采样点占比"]))], "济南")        .set_global_opts(            title_opts=opts.TitleOpts(title="济南各区县4G网络良好质量(SINR > 0)比例分布图", pos_left="center"),            visualmap_opts=opts.VisualMapOpts(min_=val_min_sinr, max_=val_max_sinr),            tooltip_opts=opts.TooltipOpts(formatter="{b}:{c} %")        )    )    return cpage = Page(interval=0)page.add(map_left(), map_right())page.render_notebook()

9. 数据处理与地理信息分析

对于地理信息的处理,我们可以使用以下代码:

from pyecharts.charts import BMapimport jsonBAIDU_AK = "GbQ806nWqGFMjuiGjTm6jPgcVGWICGA1"def bmap_base():    c = (        BMap(init_opts=opts.InitOpts(height='615px', width='1350px'))        .add_schema(            baidu_ak=BAIDU_AK,            center=[117.064366, 36.646401],            zoom=15        )        .add_coordinate_json(json_file='./data.json')        .add(            "",             data_pair=[list(z) for z in zip(list(data["grid_no"]), list(data["覆盖好质量差的质差样本占比"]))],            label_opts=opts.LabelOpts(is_show=False),            symbol_size=6,            type_= 'effectScatter'        )        .add_control_panel(            navigation_control_opts=opts.BMapNavigationControlOpts(),            scale_control_opts=opts.BMapScaleControlOpts(),            overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True, offset_width=0, offset_height=0)        )        .set_global_opts(            title_opts=opts.TitleOpts(title="济南覆盖好质量差SINR质差栅格分布图", pos_left='center')        )        .set_series_opts(            effect_opts=opts.EffectOpts(symbol='circle', scale=5, brush_type="stroke")        )    )    return cbmap = bmap_base()bmap.render("济南质差栅格分布图.html")bmap.render_notebook()

10. 堆叠柱状图与特殊处理

我们可以绘制堆叠柱状图:

bar = Bar(init_opts=opts.InitOpts(height='350px'))bar.add_xaxis(list(prb_label_city_count["City1"].unique()))for label in prb_label_city_count["prb_label"].unique():    p = prb_label_city_count[prb_label_city_count["prb_label"]==label]    bar.add_yaxis(label=list((p["prb_label_per"]*100).round(2)), stack="stack1")bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))bar.set_global_opts(    title_opts=opts.TitleOpts(title="各地市PRB利用率分区间段分布图", pos_left="center"),    legend_opts=opts.LegendOpts(pos_top="8%"),    yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} %"), max_=100),    tooltip_opts=opts.TooltipOpts(formatter="{b}:{c} %"))bar.render_notebook()

11. 地图标注与数据处理

对于需要标注的地图,我们可以使用以下代码:

city = avg_traffic['City1'] + "市"val_min, val_max = avg_traffic["Downlink traffic at the PDCP Layer"].min(), avg_traffic["Downlink traffic at the PDCP Layer"].max()def map_shandong():    c = (        Map()        .add("", [list(z) for z in zip(list(city), list(avg_traffic["Downlink traffic at the PDCP Layer"].round(2)))], "山东")        .set_global_opts(            title_opts=opts.TitleOpts(title="2月份各地市平均单小区忙时业务量", pos_left="center"),            visualmap_opts=opts.VisualMapOpts(min_=val_min, max_=val_max)        )    )    return cmymap = map_shandong()mymap.render()mymap.render_notebook()

12. 数据处理与分段操作

最后,我们可以对特定数据进行分段操作:

newtable["prb_label"] = pd.cut(newtable["Average downlink PRB usage"], [0, 0.2, 0.5, 0.8, 1], labels=["低负荷", "中等负荷", "高负荷", "超高负荷"], include_lowest=True)

以上为对实际项目数据进行处理的详细步骤和代码示例,希望对您有所帮助!

转载地址:http://fmafk.baihongyu.com/

你可能感兴趣的文章
Python You are using pip version 10.0.1, however version 19.3.1 is available.
查看>>
python zipfile模块学习笔记(一)
查看>>
Python zip函数 详解(全)
查看>>
Python \r\n与\n的转换
查看>>
python __new__中单例的作用
查看>>
python | aiofiles,一个超酷的 Python 库!
查看>>
python | akshare,一个超强的 开源Python 金融数据接口库!
查看>>
python | alabaster,一个强大的 关于alabaster 主题 Python 库!
查看>>
python | algorithms,一个超赞的 集合常用算法的Python 库!
查看>>
python调用jpype 报错:OSError JVM is already started和JVM cannot be restarted
查看>>
python | authlib,一个强大的 Python 库!
查看>>
python | awswrangler,一个高效的 Python 库!
查看>>
python | bashplotlib,一个有趣的Python库!
查看>>
python | bentoml,一个超级厉害的 模型部署 Python 库!
查看>>
python调用jar包的模块_python调用jar包
查看>>
python | black,一个神奇的 代码格式化工具 Python 库!
查看>>
python | bleach,一个超强的 Python 库!
查看>>
python | cartopy,一个有趣的 Python 库!
查看>>
python | cloud-init,一个实用的 云计算 Python 库!
查看>>
python | code2flow,一个神奇的 Python 库!
查看>>