Давайте воспользуемся реальным набором данных от TRAI, чтобы проанализировать скорость передачи данных по мобильным сетям и попытаться узнать средние скорости для определенного оператора или штата в этом месяце. Это также покажет, насколько легко можно использовать Pandas для любых реальных данных для получения интересных результатов.
О наборе данных —
Регуляторный орган электросвязи Индии (TRAI) публикует ежемесячный набор данных о скорости интернета, измеренной им через приложение MySpeed ‚Äã‚Äã(TRAI) . Сюда входят инициированные пользователем тесты скорости или периодические фоновые тесты, выполняемые приложением. Мы постараемся проанализировать этот набор данных и увидеть средние скорости для конкретного оператора или штата в этом месяце.
Проверка структуры необработанных данных:
- Перейдите на TRAI MySpeed ‚Äã‚ÄãPortal и загрузите CSV-файл за последний месяц. в разделе Загрузить. Вы также можете загрузить CSV-файл, используемый в этой статье: sept18_publish.csv или sept18_publish_drive.csv
- Откройте этот файл электронной таблицы.
ПРИМЕЧАНИЕ . Поскольку набор данных огромен, программное обеспечение может предупредить вас, что оно не может загрузить все строки. Это прекрасно. Кроме того, если вы используете Microsoft Excel, может появиться предупреждение об открытии файла SYLK. Эту ошибку можно игнорировать, так как это распространенная ошибка в Excel.
Теперь давайте посмотрим на расположение данных-Имена столбцов в наборе данных
1-й столбец относится к сетевому оператору — JIO, Airtel и т. д.
2-й столбец соответствует сетевой технологии – 3G или 4G.
3-й столбец – тип инициированного теста – загрузить или скачать.
4-й столбец – это Скорость, измеренная в килобайтах в секунду.
5-й столбец – это Уровень сигнала во время измерения.
6-й столбец – это местная зона обслуживания (LSA) или круг, в котором проводилось тестирование – Дели, штат Орисса. и т. д. Мы будем называть это просто «состояниями».
ПРИМЕЧАНИЕ. Мощность сигнала может быть na (недоступна)
из-за того, что некоторые устройства не могут перехватить сигнал. Мы не будем использовать этот параметр в наших расчетах, чтобы упростить процесс. Однако это можно легко добавить в качестве условия при фильтрации.
Требуемые пакеты —
Pandas — a популярный набор инструментов для анализа данных. Очень мощный инструмент для обработки больших наборов данных.
Numpy — обеспечивает быстрые и эффективные операции с массивами однородных данных. Мы будем использовать это вместе с pandas и matplotlib.
Matplotlib — это библиотека для построения графиков. Мы будем использовать его функцию построения гистограмм для построения гистограмм.
Приступим к анализу данных.
Шаг 1. Импортируйте пакеты и определите некоторые константы.
|
Шаг № 2: Определите несколько списков, в которых будут храниться окончательные вычисленные результаты, чтобы их можно было легко передать в функцию построения гистограммы. Состояние (или оператор), скорость загрузки и скорость загрузки будут храниться последовательно, поэтому можно получить доступ к индексу, состоянию (или оператору) и соответствующим им скоростям загрузки и выгрузки.
Например, final_states [2 ], final_download_speeds [2]
и final_upload_speeds [2]
дадут соответствующие значения ‚Äã‚Äãдля третьего состояния.
# определение списков
final_download_speeds
=
[]
final_upload_speeds
=
[]
final_states
=
[]
final_operators
=
[]
Шаг № 3: < /строн g> Импортируйте файл с помощью read_csv()
Pandas read_csv()
и сохраните его в ' дф '. Это создаст DataFrame содержимого CSV, с которым мы будем работать.
df
=
pd.read_csv (DATASET_FILENAME)
# назначить заголовки для каждого столбца на основе данных
# это позволяет нам легко получить доступ к столбцам
df.columns
=
[
`Поставщик услуг`
,
` Технология`
,
`Тип теста`
,
`Скорость передачи данных`
,
`Сила сигнала`
,
` Состояние`
]
Шаг 4. Сначала найдем все уникальные состояния и операторы в этом наборе данных и сохраним их в соответствующих списках состояний. и операторы.
Шаг № 5: определить функция fixed_operator
, которая будет сохранять оператор постоянным и перебирать все доступные состояния для этого оператора. Мы можем построить аналогичную функцию для фиксированного состояния.
| < / tr>
Выход:
Керала — Ср. Скачать: 26129.27 Ср. Загрузить: 5193,46 Раджастхан - Ср. Скачать: 27784,86 Ср. Загрузка: 5736.18 Махараштра - Ср. Скачать: 20707.88 Ср. Загрузка: 4130,46 UP Восток - Ср. Скачать: 22451.35 Ср. Загрузка: 5727,95 Карнатака - Ср. Скачать: 16950.36 Ср. Загрузка: 4720,68 Мадхья-Прадеш - Ср. Скачать: 23594,85 Ср. Загрузка: 4802,89 Калькутта - Ср. Скачать: 26747.80 Ср. Загрузка: 5655,55 Бихар - Ср. Скачать: 31730.54 Ср. Загрузка: 6599,45 Гуджарат - Ср. Скачать: 16377.43 Ср. Загрузка: 3642,89 UP Запад - Ср. Скачать: 23720.82 Ср. Загрузка: 5280.46 Орисса - Ср. Скачать: 31502.05 Ср. Загрузка: 6895,46 Тамил Наду - Ср. Скачать: 16689,28 Ср. Загрузка: 4107,44 Дели - Ср. Скачать: 20308.30 Ср. Загрузка: 4877,40 Ассам - Ср. Скачать: 5653.49 Ср. Загрузка: 2864,47 Андхра-Прадеш - Ср. Скачать: 32444.07 Ср. Загрузка: 5755,95 Харьяна - Ср. Скачать: 7170.63 Ср. Загрузка: 2680.02 Пенджаб - Ср. Скачать: 14454.45 Ср. Загрузка: 4981,15 Северо-Восток - Ср. Скачать: 6702.29 Ср. Загрузка: 2966,84 Мумбаи - Ср. Скачать: 14070.97 Ср. Загрузка: 4118.21 Ченнаи - Ср. Скачать: 20054.47 Ср. Загрузка: 4602,35 Химачал-Прадеш - Ср. Скачать: 7436,99 Ср. Загрузка: 4020.09 Jammu & amp; Кашмир - Сред. Скачать: 8759,20 Ср. Загрузить: 4418,21 Западная Бенгалия - Ср. Скачать: 16821.17 Ср. Загрузка: 3628.78
График данных —
Используйте метод arange()
Numpy, который возвращает равномерно распределенные значения ‚Äã‚Äãв течение заданного интервала. Здесь, передавая длину списка final_states
, мы получаем значения ‚Äã‚Äãот 0 до количества состояний в списке, например [0, 1, 2, 3...]
Тогда мы можем использовать эти индексы для построения бара в этом месте. Вторая полоса строится путем смещения положения первой полосы на ширину полосы.
fig, ax
=
plt.subplots ()
# ширина каждый бар
bar_width
=
0,25
# непрозрачность каждой полосы
непрозрачность
=
0.8
# сохранить позиции
index
=
np.arange (
len
(final_states))
# plt. bar() занимает позицию
# столбцы, данные для построения,
# ширина каждой полосы и некоторые другие
# необязательные параметры, такие как непрозрачность и цвет
# построить расписание загрузки
bar_download
=
plt.bar (index, final_download_speeds,
bar_width, alpha
=
непрозрачность,
цвет
=
`b`
, label
=
`Загрузить`
)
# создать загрузку расписание
bar_upload
=
plt.bar ( индекс
+
bar_width, final_upload_speeds,
bar_width, alpha
=
непрозрачность, цвет
=
`g`
,
label
=
`Загрузить`
)
# имя диаграммы
plt.title (
`Сред. Скорость загрузки/выгрузки для `
+
str
(CONST_OPERATOR))
# Метка оси X
< / p>
plt.xlabel (
`Состояния`
)
# Метка оси Y
plt.ylabel (
`Средняя скорость в кбит/с`
)
# метка под каждым из столбцов,
# соответствует состояниям
plt.xticks (index
+
bar_width, final_states, поворот
=
90
)
plt .le gend ()
# сделать макет диаграммы жестким
plt.tight_layout ()
# показать график
plt.show ()
Гистограмма расчетных скоростей
Сравнение данных за два месяца —
Давайте также возьмем данные за другой месяц и сопоставим их вместе, чтобы увидеть разницу в скорости передачи данных.
В этом примере набор данных за предыдущий месяц будет таким же, как sept18_publish.csv, и набор данных за следующий месяц — oct18_publish.csv .
Нам просто нужно снова выполнить те же действия. Прочитайте данные еще за месяц. Отфильтруйте его в последующих кадрах данных, а затем постройте его, используя немного другой метод. При построении столбцов мы увеличим 3-й и 4-й столбцы (соответствующие загрузке и загрузке второго файла) в 2 и 3 раза по ширине столбцов, чтобы они оказались в правильном положении.
Логика смещения при построении четырех полос
Ниже приведена реализация для сравнения данных за 2 месяца:
|