AI-Agent 面试题汇总 - Python数据分析篇(三)

1-将下面的字典创建为DataFrame

import pandas as pd

data = {
    "name": ["Tom", "Jack", "Lily"],
    "salary": [12000, 15000, 18000],
    "education": ["本科", "硕士", "博士"]
}
df = pd.DataFrame(data)

2-提取含有字符串“Python”的行

df[df["content"].str.contains("Python", na=False)]

3-输出df的所有列名

df.columns
# 或
list(df.columns)

4-修改第二列列名为popularity

cols = df.columns.tolist()
cols[1] = "popularity"
df.columns = cols

5-统计grammer列中每种编程语言出现的次数

df["grammer"].value_counts()

6-计算salary最大值与最小值之差

df["salary"].max() - df["salary"].min()

7-将第一行与最后一行拼接

pd.concat([df.head(1), df.tail(1)], axis=0)

8-将第8行数据添加至末尾

df = pd.concat([df, df.iloc[[7]]], ignore_index=True)

9-查看每列的数据类型

df.dtypes

10-将createTime列设置为索引

df = df.set_index("createTime")

11-生成一个和df长度相同的随机数DataFrame

import numpy as np
rand_df = pd.DataFrame({"rand": np.random.rand(len(df))})

12-将上一题生成的DataFrame与df合并

df = pd.concat([df, rand_df], axis=1)

13-生成新的一列new为salary列减去随机数列

df["new"] = df["salary"] - df["rand"]

14-检查数据中是否含有任何缺失值

df.isna().values.any()

15-将salary列类型转换为浮点数

df["salary"] = df["salary"].astype(float)

16-计算salary大于10000的次数

(df["salary"] > 10000).sum()

17-查看每种学历出现的次数

df["education"].value_counts()

18-查看education列共有几种学历

df["education"].nunique()

19-提取salary与new列之和大于60000的最后3行

df[(df["salary"] + df["new"]) > 60000].tail(3)

20-使用绝对路径读取本地Excel数据

df = pd.read_excel(r"D:\data\test.xlsx")

21-查看数据前三行

df.head(3)

22-查看每列数据缺失值情况

df.isna().sum()

23-提取日期列含有空值的行

df[df["date"].isna()]

24-输出每列缺失值具体行数

df.isna().sum()

25-删除所有存在缺失值的行

df = df.dropna()

26-绘制收盘价的折线图

import matplotlib.pyplot as plt
df["close"].plot(figsize=(10,4))
plt.show()

27-同时绘制开盘价与收盘价

df[["open", "close"]].plot(figsize=(10,4))
plt.show()

28-绘制涨跌幅的直方图

df["pctChg"].hist(bins=20)
plt.show()

29-让直方图更细致

df["pctChg"].hist(bins=50)
plt.show()

30-以data的列名创建一个DataFrame

new_df = pd.DataFrame(columns=data.columns)

31-打印所有换手率不是数字的行

mask = pd.to_numeric(df["turn"], errors="coerce").isna()
df[mask]

32-打印所有换手率为--的行

df[df["turn"] == "--"]

33-重置data的行号

data = data.reset_index(drop=True)

34-删除所有换手率为非数字的行

mask = pd.to_numeric(df["turn"], errors="coerce").notna()
df = df[mask]

35-绘制换手率的密度曲线

pd.to_numeric(df["turn"], errors="coerce").dropna().plot(kind="kde")
plt.show()

36-计算前一天与后一天收盘价的差值

df["close_diff"] = df["close"].diff()

37-将第一列大于50的数字修改为“高”

first_col = df.columns[0]
df.loc[df[first_col] > 50, first_col] = "高"

38-计算第一列与第二列之间的欧式距离

import numpy as np
a = pd.to_numeric(df.iloc[:, 0], errors="coerce")
b = pd.to_numeric(df.iloc[:, 1], errors="coerce")
dist = np.sqrt(((a - b) ** 2).sum())

39-从CSV文件中读取指定数据

df = pd.read_csv("test.csv", usecols=["A", "B", "C"])
# 或
# df = pd.read_csv("test.csv", nrows=100)

40-从DataFrame提取数据

s = df["salary"]
sub = df[["salary", "education"]]
part = df.iloc[0:5, 0:3]

41-将数据取消使用科学计数法

pd.set_option("display.float_format", lambda x: "%.6f" % x)

42-将上一题的数据转换为百分数

pct = df["rate"].map(lambda x: f"{x:.2%}")

43-查找上一题数据中第3大值的行号

idx = df["rate"].nlargest(3).index[-1]

44-反转df的行

df_rev = df.iloc[::-1].reset_index(drop=True)

45-按照多列对数据进行合并

merged = pd.merge(df1, df2, on=["id", "date"], how="inner")

46-再次读取数据1并显示所有的列

pd.set_option("display.max_columns", None)
data1 = pd.read_csv("data1.csv")
data1.head()

47-查找secondType与thirdType值相等的行号

df.index[df["secondType"] == df["thirdType"]]

48-查找薪资大于平均薪资的第三个数据

tmp = df[df["salary"] > df["salary"].mean()]
third = tmp.iloc[2]

49-将上一题数据的salary列开根号

import numpy as np
tmp["salary_sqrt"] = np.sqrt(tmp["salary"])

50-将上一题数据的linestaion列按_拆分

tmp[["line", "station"]] = tmp["linestaion"].str.split("_", expand=True)

51-查看上一题数据中一共有多少列

tmp.shape[1]

52-提取industryField列以“数据”开头的行

df[df["industryField"].str.startswith("数据", na=False)]

53-按列制作数据透视表

pt = pd.pivot_table(df, index="district", values="salary", aggfunc="mean")

54-同时对salary、score两列进行计算

df[["salary", "score"]].apply(lambda x: x.mean())
# 或
# df[["salary", "score"]].agg(["mean", "max", "min"])

55-对不同列执行不同的计算

df.agg({
    "salary": "mean",
    "score": "max",
    "age": "min"
})

56-计算并提取平均薪资最高的区

res = df.groupby("district")["salary"].mean().sort_values(ascending=False)
top_district = res.index[0]
top_value = res.iloc[0]

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

马上暑期实习要全面展开了,我也要开始准备暑期实习了,刚开始投日常练手,昨天面了百度,结果被组里正职哥发现了,正好昨天正职哥请吃饭,mt都在,mt就给我说去其他家不如留在组里,说组里每年都有3-4个hc(这个是真的,我们组业务核心但是强度大流动性高,现在还有26秋招hc,mt之前问过我留用的事情,但是我是27届的)。但是现在问题也就出现了,有hc是真的,但是真的会留给转正嘛,或者会留给我嘛,mt对我的表现整体来说还是满意,需求交付不错,同时由于组里拥抱ai,我之前做过agent开发(三脚猫功夫,仅限于知道这个是什么,写过一点mcp),mt喜欢跟我交流ai,最近🦞出来mt也一直在问我养龙虾的进度。我mt职级蛮高,按之前在我们组实习过的直系学长(软工的传承,同学校,同学院)的经验来说,我mt说是可以掌控我目前方向的hc,但是我觉得能不能转正还是主要看ld,但是我很明确的认知是,我ld不怎么认识我。现在陷入了极大的纠结之中,已经咨询了身边一群人,有的劝我,既然已经说有转正机会了,那就留下;有的人劝我说千万不要吃大饼,再刷一段大厂实习去。其实再找暑期也不一定能转正,这也是我mt劝我的理由,你去另外一家干三四个月,就绝对能转正了?但是去另外一家表示多一段大厂实习的经历,简历感觉会不会更好看,我原本对自己的履历很自信,已经有哈啰加快手的实习,但是看了太多92高学历同学,有大厂实习了,我不禁很焦虑,我秋招真的可以嘛。其实之前自己一直蛮自信,看到其他双非同学秋招情况不好,觉得自己会不一样,但是慢慢暑期到来,秋招也临近,自己心里也总是打嘀咕,真的行嘛?真能上岸大厂嘛?如果留下来没能转正,我这个烂双非,秋招,凭借哈啰加快手的履历能顺利约面拿到offer嘛?所以我感觉我心里可能更期望再刷一段。但是组里的氛围确实蛮好,大家也都劝我别走,跟一个正职哥天天在一起聊NBA,跟mt他们吃饭一起开玩笑,现在组里待熟了也开始正式进迭代,接一些大需求了,免得再去一家新公司landing的尴尬期,在手子的实习氛围还是薪资都让我很满意。思来想去,考虑良久也就是对自己不自信,纠结害怕自己找不到大厂的offer,有时候觉得这只是一份工作而已,自己好像把这个大厂offer看的太重了,又不是发财的彩票,但是心里又不断的想要获得这份offer,人生好难,也许自己高中时多努力一下就不会这样了吧手子b1的一家拌面,真的很喜欢,特别香还有免费加面,在手子食堂的最爱
喵_coding:我觉得你在手子时长够了,但是还是那句话,找别的也不代表能转正,秋招还是要搞得,不然转正也是被压薪资,不要逃避就是了,至于再找,那就要考虑好是离职找还是在职找了,其实都挺好的,组内业务核心可以继续深耕
三月的小目标
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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