小厂数分实习笔试

第一次笔试,我非常垃圾,涉及Pandas和python
1、数据去重: “按 X 去重,保留 ID 最大的” 
按照x排列
df_sorted=df.sort_values(by='x')
# 按x分组,取id最大值
result=df_sorted.groupby('x')['id'].max().reset_index()
print(result)
2、计算每个种类的违约率
import pandas as pd
# 构造数据(根据手写内容,假设 class 和 tar 的对应关系如下)
data = {
    "class": ["D", "B", "D", "C", "C", "A", "C", "D", "A", "B", "D", "A", "C", "A", "C"],
    "tar": [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1]
}
df = pd.DataFrame(data)
# 按 class 分组,计算违约率(tar==1 的比例)
default_rates = df.groupby("class")["tar"].mean()
print(default_rates)
3、求函数fx=e^x+x^2在何处取得最小值,精度要求:绝对误差小于1e-6,不能调用优化相关包
import math

# 定义一阶导数 f'(x) = e^x + 2x
def f_prime(x):
    return math.exp(x) + 2 * x

# 定义二阶导数 f''(x) = e^x + 2
def f_double_prime(x):
    return math.exp(x) + 2

# 牛顿迭代法找极值点
def newton_method(initial_x, epsilon=1e-6):
    x = initial_x
    while True:
        x_next = x - f_prime(x) / f_double_prime(x)
        # 检查绝对误差是否小于精度要求
        if abs(x_next - x) < epsilon:
            return x_next
        x = x_next

# 初始值选择(通过观察函数趋势,选 x=0 附近作为初始值)
initial_x = 0
min_x = newton_method(initial_x)
min_value = math.exp(min_x) + min_x ** 2

print(f"函数 f(x) = e^x + x^2 在 x = {min_x:.8f} 处取得最小值")
print(f"最小值为: {min_value:.8f}")
4、写个month_diff函数。计算两个'ym'格式的日期字符串的月份差
from datetime import datetime

def month_diff(ym1, ym2):
    # 解析日期为年和月
    y1, m1 = int(ym1[:4]), int(ym1[4:])
    y2, m2 = int(ym2[:4]), int(ym2[4:])
    # 计算总月份差
    return (y1 - y2) * 12 + (m1 - m2)

# 验证示例
print(month_diff('202001', '201804'))  # 输出:21
5、解析字符串:s='A1:1;b2:13;x5:651;D61:47' 解析为字典格式
s = 'A1:1;b2:13;x5:651;D61:47'
# 先按分号 ; 分割成多个键值对字符串
items = s.split(';')
result_dict = {}
for item in items:
    # 再按冒号 : 分割成键和值
    key, value = item.split(':')
    # 将值转换为整数(根据需求,也可保留字符串)
    result_dict[key] = int(value)
print(result_dict)
全部评论
我也不太会写友友,继续加油吧
点赞 回复 分享
发布于 昨天 13:58 坦桑尼亚
一个也不会写,不知道是国庆疯玩之后全部忘了还是压根就不会,不过pandas确实一直不怎么能自主用,很多都是查ai
点赞 回复 分享
发布于 10-10 19:44 湖北

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务