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协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

给我面没招了,感觉自己好菜、面试很难,还是要多多练习1.为什么在 RAG 流程中引入父子索引(Parent-Document Retrieval)?2.为什么引入 BM25?向量检索和 BM25 的融合比例是怎样的?3.检索融合的具体流程是什么?召回后有没有做 Rerank?4.Rerank 后返回几个块(Chunk)?有没有针对这个返回数量做过验证?5.Rerank 后的 TopK 截断是怎么做的?为什么是这个值?有没有其他截断方案?6.讲一下上下文工程(Context Engineering),Agent 的记忆(Memory)是怎么做的?7.请详细讲解分布式令牌桶限流的实现。8.漏桶算法(Leaky Bucket)的原理讲一下。9。滑动窗口算法限流讲一下。如果用代码实现,滑动窗口的结构体会包含哪些字段?10.滑动窗口和令牌桶相比有什么缺点?11.在 Redis 中,你会用什么数据结构来实现滑动窗口限流?12.LRU 缓存的实现原理讲一下。13.布隆过滤器(Bloom Filter)的底层原理和适用场景讲一下。14.MySQL 索引会在哪些情况下失效?15.在使用 LIKE 进行模糊查询时,索引什么情况下会失效?16.MySQL 的事务隔离级别有哪些?如何保证一致性?17.详细说说 MVCC 的实现,ReadView 的生成时机是怎样的?18.在不同的隔离级别下,一个事务分别会创造几个 ReadView?19.MySQL 都有哪些锁?它们的作用分别是什么?20.为什么选择 Python 和 Go 作为技术栈?在处理并发时有什么区别?21.手撕代码:实现反转链表
查看21道真题和解析
点赞 评论 收藏
分享
评论
4
3
分享

创作者周榜

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