加班党福音!只需5分钟,Python帮你搞定手机号归属地查询!让你有更多时间摸鱼

嗨,大家好,我是花姐,今天给大家分享一个"反内卷"的小故事。

事情是这样的:那天,老板突然拍着桌子找我,说:"花姐啊,这里有个Excel文件,里面有1万多个客户手机号,你按照归属地分分类,尽快给我。"

我当时脑袋一嗡,心想:"老板,靠人肉分类?属实有点离谱了!"不过,我是谁啊,咱可是个Python开发者!面对1万个手机号,咱用代码来搞定,不仅轻松还贼快!💪

以下所看到的手机号码均为程序随机生成,都是假的,都是假的,都是假的!


一、问题拆解

任务是这样的:

  1. 输入:一个Excel表格,里面有1万个客户手机号。
  2. 输出:把这些手机号按照归属地分类,并保存到不同的Excel文件中。

分析一下,完成这个任务需要三步:

  1. 读取Excel文件,拿到手机号。
  2. 获取每个手机号的归属地。
  3. 按归属地分组,把分组后的数据保存到新的Excel文件中。

1和3都简单,就是获取手机号码归属地会有些困难。

花姐找了上网提供归属地查询的API,一看价格,1299果断放弃。

还好在万能的GitHub找到了完美的解决方案。

进去一看调用起来非常简单


剩下的不就手拿把掐了吗!😊

二、所需工具

实现这个任务我们需要用到以下工具:

  1. pandas:用于读取和处理Excel文件。
  2. phone:用于获取手机号归属地。

如果你没有安装这些库,可以直接用以下命令安装:

bash 复制代码
pip install pandas phone

三、代码实现

1. 读取Excel文件

python 复制代码
df = pd.read_excel('客户手机号.xlsx')

这里使用pandas库的read_excel方法读取一个名为客户手机号.xlsx的Excel文件,并将其内容存储在DataFrame(df)中。

2. 初始化Phone库实例

python 复制代码
phone = Phone()

这里创建了Phone类的一个实例。

3. 定义函数获取手机号归属地信息

phone.find()方法返回值为{'phone': 'shoujihaoma', 'province': '广东', 'city': '湛江', 'zip_code': '524000', 'area_code': '0759', 'phone_type': '联通'} 根据返回结果我们保留province、city和phone_type这几个字段,没有查询到的就默认未知。

python 复制代码
def get_location_info(phone_number):
    try:
        # 获取归属地信息
        location = phone.find(phone_number)
        if location:
            # 提取所需的字段
            province = location.get('province', '未知')
            city = location.get('city', '未知')
            phone_type = location.get('phone_type', '未知')
            return province, city, phone_type
        else:
            return '未知', '未知', '未知'
    except Exception as e:
        return '未知', '未知', '未知'

4. 提取归属地信息并添加到DataFrame

python 复制代码
df[['省份', '城市', '运营商']] = df['手机号'].apply(lambda x: pd.Series(get_location_info(x)))
# 你是不是想写个循环遍历df?其实一个lambda就搞定了
  • 这里使用apply()方法对DataFrame中的每个手机号列(df['手机号'])应用get_location_info函数。
  • lambda x: pd.Series(get_location_info(x))这一部分确保get_location_info(x)返回的省份、城市和运营商信息被正确地转换为DataFrame的列。每个手机号的归属地信息会填充到"省份"、"城市"和"运营商"这三列中。
  • apply()会按行遍历手机号列,并调用get_location_info获取每个手机号的归属地信息。

5. 保存修改后的Excel文件

python 复制代码
df.to_excel('客户手机号_归属地信息.xlsx', index=False)
  • 这行代码将处理后的DataFrame保存为新的Excel文件,命名为客户手机号_归属地信息.xlsx
  • index=False表示不保存DataFrame的行索引(即不在Excel中保存第一列的行号)。

四、源码

话不多说,直接上代码👇:

python 复制代码
import pandas as pd
from phone import Phone

# Step 1: 读取Excel文件
df = pd.read_excel('客户手机号.xlsx')

# Step 2: 初始化Phone库实例
phone = Phone()

# Step 3: 定义一个函数获取手机号归属地,并提取所需信息
def get_location_info(phone_number):
    try:
        # 获取归属地信息
        location = phone.find(phone_number)
        if location:
            # 提取所需的字段
            province = location.get('province', '未知')
            city = location.get('city', '未知')
            phone_type = location.get('phone_type', '未知')
            return province, city, phone_type
        else:
            return '未知', '未知', '未知'
    except Exception as e:
        return '未知', '未知', '未知'

# Step 4: 提取归属地信息并添加到DataFrame
df[['省份', '城市', '运营商']] = df['手机号'].apply(lambda x: pd.Series(get_location_info(x)))

# Step 5: 保存修改后的Excel文件
df.to_excel('客户手机号_归属地信息.xlsx', index=False)
print("完成")

五、运行效果

运行代码后,你会在当前目录下生成客户手机号_归属地信息.xlsx


六、花姐的反思

写完这个程序,我忍不住感叹,Python真的是提高生产力的神器啊!😂 再次证明了程序员的存在意义------能让"重复劳动"这种事离我们远远的。如果你还在靠手动方式处理Excel数据,那真的该试试Python了。

当然,写代码的时候要注意以下几点:

  1. 数据库的查询速度很快,但数据量特别大时也需要优化,比如批量处理。
  2. 千万别忘了加异常处理(try...except),特别是处理用户提供的数据时,防止程序崩溃。
  3. 做完任务别忘了喝奶茶庆祝!🍹

七、结语

好了,今天的分享就到这里啦!希望这篇文章能给大家提供一点思路。如果你也有类似的任务,不妨试试用Python来解决,说不定还能让老板对你刮目相看呢!😂

我是花姐,一个专注于Python技术的分享者,咱们下次见!👋

相关推荐
爱的叹息38 分钟前
关于 JDK 中的 jce.jar 的详解,以及与之功能类似的主流加解密工具的详细对比分析
java·python·jar
Lhuu(重开版1 小时前
2025第十六届蓝桥杯PythonB组部分题解
python
来自星星的坤1 小时前
SpringBoot 与 Vue3 实现前后端互联全解析
后端·ajax·前端框架·vue·springboot
AUGENSTERN_dc1 小时前
RaabitMQ 快速入门
java·后端·rabbitmq
程丞Q香1 小时前
python——学生管理系统
开发语言·python·pycharm
烛阴1 小时前
零基础必看!Express 项目 .env 配置,开发、测试、生产环境轻松搞定!
javascript·后端·express
燃星cro2 小时前
参照Spring Boot后端框架实现序列化工具类
java·spring boot·后端
dragon_perfect2 小时前
ubuntu22.04上设定Service程序自启动,自动运行Conda环境下的Python脚本(亲测)
开发语言·人工智能·python·conda
明月看潮生2 小时前
青少年编程与数学 02-016 Python数据结构与算法 15课题、字符串匹配
python·算法·青少年编程·编程与数学