Jupyter+Notebook+Excel

启动 Notebook

1、打开终端(Terminal)

2、进入你想存文章的文件夹,例如:

cd ~/Documents/article_project

3、启动 Jupyter

jupyter notebook

会自动打开浏览器,显示文件列表

点击 New → Python 3 新建 Notebook

Excel相关操作

读取

1
2
3
4
5
6
import pandas as pd

# 读取 Excel 文件
df = pd.read_excel("your_file.xlsx") # 替换成你的文件名
df.head() # 显示前5行

数据

单条件筛选

1
2
3
# 筛选“地区”列为北京的行
df_beijing = df[df["地区"] == "北京"]
df_beijing.head()

多条件筛选

1
2
3
# 地区是北京且销售额大于1000
df_filtered = df[(df["地区"] == "北京") & (df["销售额"] > 1000)]
df_filtered.head()

筛选包含指定值

1
2
3
4
# 客户名称包含“科技”的行
df_tech = df[df["客户名称"].str.contains("科技", case=False)]
df_tech.head()

去重

去重(默认按所有列)

1
2
3
# 去重,默认是按所有列去重
df_unique = df.drop_duplicates()
df_unique.head()

去重(指定列)

1
2
3
# 基于“客户ID”去重,保留第一次出现
df_unique = df.drop_duplicates(subset=["客户ID"], keep="first")
df_unique.head()

去除空值

1
2
3
# 去除所有列的空值行
df_clean = df.dropna()
df_clean.head()

去除特定列的空值

1
2
df_no_na_col = df.dropna(subset=["销售额"])
df_no_na_col.head()

填充空值

1
2
3
# 用0填充“销售额”列的空值
df_filled = df.fillna({"销售额": 0})
df_filled.head()

排序

1
2
3
4
5
# 按单列升序排序
df.sort_values(by="销售额", ascending=True, inplace=True)

# 按多列排序
df.sort_values(by=["地区","销售额"], ascending=[True, False], inplace=True)

添加新列

1
2
3
4
5
# 新增一列 = 销售额 * 0.9
df["折后金额"] = df["销售额"] * 0.9

# 根据条件生成新列
df["高销售"] = df["销售额"].apply(lambda x: "是" if x > 1000 else "否")

筛选 Top N / Bottom N

1
2
3
4
5
# 销售额前 5 名
df.nlargest(5, "销售额")

# 销售额最小 3 名
df.nsmallest(3, "销售额")

实现Vslookup

1
2
3
4
5
6
7
8
9
10
11
12
# 主表
df1 = pd.DataFrame({
"客户ID":[1,2,3],
"客户名称":["A","B","C"]
})

# 参考表
df2 = pd.DataFrame({
"客户ID":[1,2,3],
"地区":["北京","上海","广州"]
})

用 merge 实现 VLOOKUP

1
2
df_merged = df1.merge(df2, on="客户ID", how="left")
df_merged

写入

1
2
df_merged.to_excel("processed.xlsx", index=False)

小技巧

链式操作:去空值 + 去重 + 筛选可以一行搞定

1
2
3
4
df_clean = df.dropna(subset=["销售额"]) \
.drop_duplicates(subset=["客户ID"]) \
.query("销售额 > 1000")

快速查看数据类型

1
2
3
4
df.head()   # 前5行
df.tail(10) # 后10行
df.info() # 数据信息
df.describe() # 统计信息

列选择

1
df[["客户ID","销售额"]]  # 选择两列

Notebook 融合 AI

安装和导入

这里以 OpenAI 免费额度的 GPT-3.5 为例:

pip install openai

1
2
from openai import OpenAI
client = OpenAI(api_key="")

提问

1
2
3
4
5
6
7
8
9
10
11
12
# 生成分析
data_text = df.head(20).to_string() # 前20行示例
prompt = f"你是数据分析师,请分析以下数据:\n{data_text}\n用中文总结趋势、异常和建议。"

response = client.chat.completions.create(
model="gpt-4",
messages=[{"role":"user", "content": prompt}],
temperature=0.7
)

analysis = response.choices[0].message.content
print(analysis)
0:00 /0:00
暧昧合伙人
遗憾