利用pandas计算概率

本文介绍如何处理51job爬取的数据,通过pandas计算在北京找到最低工资为1万的Java工作的概率,涉及数据编码转换问题。

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

上次从51job上爬取数据存储到51job.txt上后我们对数据进行处理,计算最小工资为1万的Java工作在哪个城市比较容易找到工作(求概率)p=p(北京)*p(Java|北京)*p(min=1万|北京)

 

import pandas as pd
df = pd.read_csv('51.txt', sep='\t')

# 计算类别的先验概率
pc = df['addr'].value_counts() / df['addr'].size

# 计算每个特征属性条件概率
pa = pd.crosstab(df['addr'], df['key'], margins=True).apply(lambda x:x/x[-1], axis=1)

# 通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值
import numpy as np
df2 = df.groupby('addr').agg([np.mean, np.var])
df2['x'] = 1

from math import pi, exp, sqrt
def f(x, mean, var):
    return exp(-(x-mean)**2/(2*var))/sqrt(2*pi*var)

df2['p_x_min']=df2[['min','x']].apply(lambda x: f(x['x'], x['min']['mean'], x['min']['var']), axis=1)
df2['p_x_max']=df2[['max','x']].apply(lambda x: f(x['x'], x['max']['mean'], x['max']['var']), axis=1)

(df2['p_x_m
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值