Python使用总结(2)

本文总结了在Python使用过程中的实用技巧,包括正则表达式(re)的应用,大数据量时利用dataframe分片提高效率,如何用matplotlib绘制直方图,处理直方图图例的特殊字符问题,计算Pandas数据框非空值数量的方法,关闭Pandas警告信息的设置,URL解码的urllib使用,以及获取本地IP地址的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续接着上次的,总结这段时间在使用Python过程中遇到的问题与解决方法。

1. 正则表达式的使用(re)

import re

# 表达式编译
pattern = re.compile(r'^1[35789]\d{9}$') 
# 如果存在匹配结果为True,否则为False
pattern.match(inst)

2. 在数据量特别大时,直接使用dataframe分片的效率优于使用groupby

#使用groupby
info_group = data.groupby('info')
for info,group in info_group:
    print(info,group)

#使用dataframe分片
info_list = data['info'].dropna().values
for user_id in range(len(info_list)):
    print(info_list[user_id])
    group = data[(data['info'] == info_list[user_id])]

3. 画直方图(matplotlib.plyplot)

一个特别详细的例子

这里还有一个点画直方图时,赋给label的值如果是以下划线开头的,那么在图例中不显示,所以必须在变量前套上一个空格再赋给label

    bar_width = 0.16 # 柱宽
    i = -1
    for id_name in id_list:
        i += 1
        temp = len(data[id_name])
        # 画直方图
        plt.bar(bar_width * i, temp, label=str(' ') + id_name,
                alpha=0.8, width=bar_width)
        # 数据标签
        plt.text(bar_width * i, temp, '%s' % temp)
        

    # 中文乱码的处理
    plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
    plt.rcParams['axes.unicode_minus'] = False
    # 纵坐标标注
    plt.ylabel('count')
    # 横坐标标注
    plt.xlabel('')
    plt.title('标题')
    # 横坐标刻度
    plt.xticks(bar_width, '07-08')
    # 纵坐标范围
    plt.ylim([min - 700000, max + 200000])
    # 不显示坐标轴刻度
    plt.axis('off')
    # 展示图例
    plt.legend()
    # 输出图例标签
    print(plt.legend().get_texts()[:])
    # 画图(必须有)
    plt.show()

4. 求某一行(列)非null值个数(pandas)

import pandas as pd

data = pd.read_csv('test.csv', sep='\t')
# 计算某一行的非null值个数
data['row_not_null_count'] = data.count(axis=1)
# 计算某一列的非null值个数
data['col_not_null_count'] = data.count() 

5. 不希望pandas输出警告信息

pd.options.mode.chained_assignment = None  # default='warn'

6. url解码(urllib)

from urllib.parse import unquote
rawurl = "%3D%3D"
url =unquote(rawurl)
print(url)

7. 使用本地ip库求ip地址

IPIP本地ip数据库下载

import datx

 ip_list = ['36.251.248.16']
  # 查询地级市精度的IP库
 c = datx.City("C:/Users/qinys/Downloads/17monipdb/17monipdb.datx")
  # 查询国内区县库
  #d = datx.District("/path/to/quxian.datx")
  # 查询基站IP库
  #base = datx.BaseStation("/path/to/station_ip.datx")
 for ip1 in ip_list:
     print(c.find(ip1))
 
# 输出格式如
# ['中国', '福建', '厦门', '']

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值