Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Phân tích tốc độ dữ liệu di động TRAI bằng Pandas trong Python

Hướng dẫn này phân tích dữ liệu tốc độ di động từ trang web chính thức của TRAI (Telecom Regulatory Authority of India) sử dụng Pandas, NumPy và Matplotlib.

Chuẩn bị dữ liệu

  1. Truy cập TRAI MySpeed.
  2. Kéo xuống cuối trang, tải file CSV dữ liệu tháng 9 (hoặc tháng bất kỳ).

Các cột chính trong file CSV:

  • Network Name (Tên nhà mạng)
  • Network Technology (Công nghệ: 4G, 3G...)
  • Type Of Test (download/upload)
  • Speed (tốc độ Kbps)
  • Signal Strength (cường độ tín hiệu)
  • State (bang/tiểu bang)

Mã nguồn phân tích

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

DATASET = 'sept19_publish.csv'
NETWORK_NAME = 'JIO'
STATE = 'Andhra Pradesh'

download_speeds = []
upload_speeds = []
states = []

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("States:", unique_states)
print("Operators:", unique_operators)

# Lọc dữ liệu cho nhà mạng JIO
JIO = data_frame[data_frame['Network'] == NETWORK_NAME]

for state in unique_states:
    current_state = JIO[JIO['State'] == state]
    download_speed = current_state[current_state['Type Of Test'] == 'download']
    download_speed_avg = download_speed['Speed'].mean()
    upload_speed = current_state[current_state['Type Of Test'] == 'upload']
    upload_speed_avg = upload_speed['Speed'].mean()

    if pd.isnull(download_speed_avg) or pd.isnull(upload_speed_avg):
        download_speed_avg, upload_speed_avg = 0, 0
    else:
        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}')

Kết quả trung bình tốc độ (một phần)

Kolkata: Download Avg. 31179.157 Upload Avg. 5597.086
Punjab: Download Avg. 29289.594 Upload Avg. 5848.015
Delhi: Download Avg. 28956.174 Upload Avg. 5340.927
...
Jammu & Kashmir: Download Avg. 1665.425 Upload Avg. 802.925

Vẽ biểu đồ so sánh

fig, axes = plt.subplots()
bar_width = 0.25
re_states = np.arange(len(states))

plt.figure(figsize=(12, 5))
plt.bar(re_states, download_speeds, bar_width, color='g', label='Avg. Download Speed')
plt.bar(re_states + bar_width, upload_speeds, bar_width, color='b', label='Avg. Upload Speed')

plt.title('Avg. Download|Upload Speed for ' + NETWORK_NAME)
plt.xlabel('States')
plt.ylabel('Average Speeds in Kbps')
plt.xticks(re_states + bar_width, states, rotation=90)
plt.legend()
plt.tight_layout()
plt.show()

Phân tích tốc độ dữ liệu di động TRAI bằng Pandas trong Python

Kết luận

Bạn có thể tùy chỉnh biểu đồ theo nhu cầu: so sánh các nhà mạng, công nghệ, hoặc vẽ heatmap. Hãy khám phá thêm với dataset này.