在Python中使用Pandas分析TRAI的移动数据速度

在Python中使用Pandas分析TRAI的移动数据速度

在本教程中,我们将使用Pandas包来分析移动数据速度。请从TRAI官方网站下载移动速度。

算法

1.进入[TRAI]([](https://myspeed.trai.gov.in/)<https://myspeed.trai.gov.in/>)网站。
2.向下滚动到页面底部。
3.您会找到不同月份的移动速度数据。
4.下载9月份的移动数据速度。

让我们看一下CSV文件中的列。

  • 网络名称

  • 网络技术

  • 测试类型

  • 速度

  • 信号强度

  • 状态

我们需要Pandas、NumPy和Matplotlib库,让我们开始编码分析数据。

例子

# 导入所需库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plot

# 常量
DATASET = 'sept19_publish.csv'
NETWORK_NAME = 'JIO'
STATE = 'Andhra Pradesh'

# 存储值的列表
download_speeds = []
upload_speeds = []
states = []
operators = []

# 使用Pandas导入数据集
data_frame = pd.read_csv(DATASET)

# 为方便访问分配列名
data_frame.columns = ['Network', 'Technology', 'Type Of Test', 'Speed', 'Signal Strength', 'State']

# 从数据集中获取唯一的状态和运营商
unique_states = data_frame['State'].unique()
unique_operators = data_frame['Network'].unique()
print(unique_states)
print()
print(unique_operators)

输出

如果您运行上面的程序,您将获得以下结果。

['Kolkata' 'Punjab' 'Delhi' 'UP West' 'Haryana' nan 'West Bengal' 'Tamil Nadu' 'Kerala' 'Rajasthan' 'Gujarat' 'Maharashtra' 'Chennai' 'Madhya Pradesh' 'UP East' 'Karnataka' 'Orissa' 'Andhra Pradesh' 'Bihar' 'Mumbai' 'North East' 'Himachal Pradesh' 'Assam' 'Jammu & Kashmir']
['JIO' 'AIRTEL' 'VODAFONE' 'IDEA' 'CELLONE' 'DOLPHIN']

继续……

# 获取我们想要的一个网络相关的数据
# 我们先前已经声明了网络
# 这将过滤数据
JIO = data_frame[data_frame['Network'] == NETWORK_NAME]

# 遍历所有状态
for state in unique_states:
   # 获取当前状态的所有数据
   current_state = JIO[JIO['State'] == state]
   # 从current_state获取下载速度
   download_speed = current_state[current_state['Type Of Test'] == 'download']
   # 计算下载速度平均值
   download_speed_avg = download_speed['Speed'].mean()
   # 从current_state获取上传速度
   upload_speed = current_state[current_state['Type Of Test'] == 'upload']
   # 计算上传速度平均值
   upload_speed_avg = upload_speed['Speed'].mean()
   # 检查平均值是否NaN
   if pd.isnull(download_speed_avg) or pd.isnull(upload_speed_avg):
      # 将两个速度都分配为0
      download_speed, upload_speed = 0, 0
   else:
      # 如果值不是NaN,则将状态添加到绘图中
      states.append(state)
   download_speeds.append(download_speed_avg)
   upload_speeds.append(upload_speed_avg)
   # 输出下载和上传的平均值
   print(f'{state}: Download Avg. {download_speed_avg:.3f} Upload Avg. {upload_speed_avg:.3f}')

输出

如果您运行以上代码,则会得到以下输出结果。

加尔各答: 下载平均值 31179.157 上传平均值 5597.086
旁遮普邦: 下载平均值 29289.594 上传平均值 5848.015
德里: 下载平均值 28956.174 上传平均值 5340.927
西北部邦: 下载平均值 21666.673 上传平均值 4118.200
哈里亚纳邦: 下载平均值 6226.855 上传平均值 2372.987
西孟加拉邦: 下载平均值 20457.976 上传平均值 4219.467
泰米尔纳德邦: 下载平均值 24029.364 上传平均值 4269.765
喀拉拉邦: 下载平均值 10735.611 上传平均值 2088.881
拉贾斯坦邦: 下载平均值 26718.066 上传平均值 5800.989
古吉拉特邦: 下载平均值 16483.987 上传平均值 3414.485
马哈拉施特拉邦: 下载平均值 20615.311 上传平均值 4033.843
钦奈: 下载平均值 6244.756 上传平均值 2271.318
中央邦: 下载平均值 15757.381 上传平均值 3859.596
东北: 下载平均值 28827.914 上传平均值 5363.082
卡纳塔克邦: 下载平均值 10257.426 上传平均值 2584.806
奥里萨邦: 下载平均值 32820.872 上传平均值 5258.215
安得拉邦: 下载平均值 8260.547 上传平均值 2390.845
比哈尔邦: 下载平均值 9657.874 上传平均值 3197.166
孟买: 下载平均值 9984.954 上传平均值 3484.052
喜马偕尔邦: 下载平均值 4472.731 上传平均值 2356.284
喜马拉雅邦: 下载平均值 6985.774 上传平均值 3970.431
阿萨姆邦: 下载平均值 4343.987 上传平均值 2237.143
查谟-克什米尔邦: 下载平均值 1665.425 上传平均值 802.925

接续部分…

# 绘制图表
fix, axes = plot.subplots()
# 设置柱形宽度
bar_width = 0.25
# 重新排列各邦位置
re_states = np.arange(len(states))
# 设置宽度和高度
plot.figure(num = None, figsize = (12, 5))
# 绘制下载速度
plot.bar(re_states, download_speeds, bar_width, color = 'g', label = 'Avg. Download
Speed')
# 绘制上传速度
plot.bar(re_states + bar_width, upload_speeds, bar_width, color='b', label='Avg. Up
load Speed')
# 图表标题
plot.title('Avg. Download|Upload Speed for ' + NETWORK_NAME)
# x轴标签
plot.xlabel('States')
# y轴标签
plot.ylabel('Average Speeds in Kbps')
# 对应各柱下方标签,即各邦
plot.xticks(re_states + bar_width, states, rotation = 90)
# 添加图例
plot.legend()
# 调整布局
plot.tight_layout()
# 显示图表
plot.show()

输出

如果运行以上代码,将会得到以下图表。

在Python中使用Pandas分析TRAI的移动数据速度

结论

您可以根据需要绘制不同的图表。通过绘制不同的图表来操作数据集。如果您对本教程有任何疑问,请在评论区中提出。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程