avatar
Мир аналитика данных
@analysts_world
28.04.2023 17:18
Вокруг света на Python!

Как определить к какой стране относится номер телефона? Вот есть у вас база и там много номеров. Но даже по коду +7 есть номера не только России, но и Казахстана. Когда стран много, то все варианты кодов не перечислить. Ну или у вас слишком много свободного времени. Но есть решение! Тут должна быть реклама чудо средства. И это ..пам, пам, пам.. библиотека Python Phonenumbers.

Все что нужно импортировать:
import pandas as pd
from tqdm import tqdm
import numpy as np
import phonenumbers
from phonenumbers import geocoder

Как пример:
phonenumbers.parse('+79991456887') выдаст вот такую информацию: PhoneNumber(country_code=7, national_number=9991456887, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None)

Итак, есть у нас датафрейм с выкаченными номерами - df_phones. Номера в колонке phone_standart. У меня они без знака +, по стандарту. Добавляем плюсик к началу:
df_phones['phone_standart'] = '+' + df_phones['phone_standart'].astype('str')

Загоняем номера в лист number_lst = df_phones['phone_standart'].tolist()
Создаем пустой лист. true_number_lst =[]

Используем библиотеку tqdm, чтобы видеть, как идет процесс. Пока в цикле перебираются номера, у вас бежит бегунок и видно, что процесс идет.

for i in tqdm(number_lst):
try:
true_number_lst.append(phonenumbers.parse(i))
except:
true_number_lst.append(np.nan)

Теперь создаем список для кодов стран:
country_lst =[]
for j in tqdm(true_number_lst):
try:
country_lst.append(geocoder.region_code_for_number(j))
except:
country_lst.append(np.nan)
В результате список country_lst заполнился кодами стран.
Присвоим его колонке датафрейма:
df_phones['country_cod'] = country_lst

В результате получим то, что видите на картинке. Каждый номер, если он есть - идентифицирован.
👍 18
🔥 10
1
2 14 2.5K

Обсуждение 2

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram