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]

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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