马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这次整理评论数据时,清洗、统计标签数量、画图和看中间结果都放在 Jupyter Notebook 里完成。刚开始的问题不是不会写 pandas,而是 Notebook 越写越乱:运行顺序混乱、测试代码散落、调图时不知道当前执行的是哪一版。后来把几个高频快捷键用熟后,分析过程才真正变得连贯。 一、Shift + Enter:最常用的“往下跑一格”6 |* g/ n. d! U
Shift + Enter 的作用是运行当前单元格,并自动跳到下一格。读取数据后,第一步不要马上清洗,先确认文件到底读对没有。文件即使没有报错,也可能出现列名不对、编码不对或行数明显减少的问题。先看 shape 和 columns,比画完图才发现数据异常更省事。 - import pandas as pd
$ m9 T5 u& f% H% i - df = pd.read_csv('评论分析_脱敏数据.csv', encoding='utf-8-sig')/ `$ t: x$ \1 m
- print('数据维度:', df.shape) ~: P5 \1 ?' U: {& l
- print('字段名称:', df.columns.tolist())
/ f# o3 {' p9 ?7 ~4 T- @ - print(df.head(3))
; ~5 T8 |. a2 S - print(df.isna().sum())
/ U( j) _/ e9 [. E7 q - empty_content = df['content'].fillna('').str.strip().eq('').sum()
, k# |& ]6 }" b; S - print('空正文数量:', empty_content)
复制代码这种“读取 → 核验 → 清洗”的连续步骤,用 Shift + Enter 最顺手。 二、Ctrl + Enter:调图时不要把整本 Notebook 跑乱
3 @4 y8 O* \9 V F9 N8 H9 U7 eCtrl + Enter 只运行当前单元格,不跳到下一格。调图时颜色、标题、尺寸和柱顶数字往往要改很多次;如果每次都按 Shift + Enter,光标会不断跳到后面的单元格,容易误运行不相关代码。 - import matplotlib.pyplot as plt
0 O+ V ^6 ~+ r3 U4 c* s1 _ - ' U- a& B h$ { J9 `& E9 H* O" k
- counts = df['sentiment'].value_counts()
! v+ m; \/ ?3 \2 y( G8 J: Q2 T - fig, ax = plt.subplots(figsize=(7, 4))
$ U- t8 Z2 z1 x - bars = ax.bar(counts.index, counts.values, color=['#4C78A8', '#E45756'])
/ X* q5 K9 z M: f* Y - ax.set_title('评论情感标签数量分布'). C" ?9 a3 J h% X
- ax.set_xlabel('情感标签')
+ @' y O. }( P& e5 m. Q - ax.set_ylabel('评论条数')
& H' w/ n7 G; ]7 J4 ` - for bar, value in zip(bars, counts.values):) v, y+ k7 P& X( Q
- ax.text(bar.get_x() + bar.get_width() / 2, value, str(value),
# L$ s/ @1 h. _) k F G# O - ha='center', va='bottom'): V; h u+ f1 E7 X" t
- + N6 f7 L6 d& b, O# P
- plt.tight_layout()* P" z( X$ o. o- {0 h3 A: w
- plt.show()
复制代码图调不好时,很多问题并不在 matplotlib,而在于不知道当前运行的是哪一格代码。用 Ctrl + Enter 可以一直停在绘图格里反复验证。 三、Alt + Enter:临时验证一个想法时,马上加一格3 v& G2 {/ E5 i& _2 K8 T
Alt + Enter 会运行当前单元格,并在下面新建一个代码格。已经统计出正负标签数量后,如果想确认每类评论的平均长度,不需要打断原来的流程,可以直接在结果下面临时插入一格。 - df['char_len'] = (0 s! n$ J- }8 b& z) @4 s7 B' t5 ]
- df['content'].fillna('').astype(str)
, L+ _; e2 t7 B - .str.replace(r'\s+', '', regex=True).str.len()% `! d6 n9 N, n+ ? N" @' [, } T
- )! @/ C4 }6 ] U. R
- # j8 e$ C" n4 }' I$ M5 X
- length_summary = (
! @; c, i+ l: N( ?5 u4 w3 \, p - df.groupby('sentiment')['char_len']- P" Q# T ^$ x2 p/ s. K( L8 c
- .agg(['count', 'mean', 'median', 'max'])
9 O; b( B: ]% k, b1 f - )* E: P7 V+ |3 ]8 B1 {$ z
- print(length_summary)
复制代码先用新单元格测试,确认结果有价值后再整理进正式流程,Notebook 不会越写越乱。 四、Esc 和 Enter:很多快捷键失灵,其实是模式不对; c# X3 a X1 g4 G& x
Notebook 有两种常用状态:Enter 进入编辑模式,用来输入或修改代码;Esc 进入命令模式,用来插入、删除、移动或转换单元格。A、B、M、Y 没反应时,通常是还停在编辑模式。简单记法:要改代码按 Enter,要管理单元格按 Esc。 五、A 和 B:把 Notebook 拆成真正能读懂的分析过程
, c- ~4 z6 x) S' v. x5 k' F! [! X按 Esc 后,A 在当前格上方插入单元格,B 在下方插入单元格。评论分析通常可以按“导入库、读取数据、检查字段、清洗、去重、统计、画图、导出”的顺序组织。若后来发现缺少去重前后对比,就回到去重单元格按 B 补一格,不要把代码硬塞到最后。 - before = len(df)
. E: W( {* p" s: }/ v! q - df = df.drop_duplicates(subset=['content']).reset_index(drop=True)
- L' P+ C$ n9 g5 B% l! s! C - after = len(df)
( t* |( _7 e* s; G8 |9 P
& k4 J- G4 Q7 R$ J- print('去重前:', before)
) J0 ^) h: D5 b- O7 A& ?3 K# b - print('去重后:', after)
# A6 h; {) b% p E - print('删除重复记录:', before - after)
复制代码 5 h0 H- v# D+ l( k N# c9 \
六、M:把关键判断写成说明,避免过几天忘了为什么这样处理
" S3 w- j7 u3 x- ] W, I4 S$ l按 Esc 后按 M,可以把代码格转换成 Markdown 格。数据分析里最容易丢的不是代码,而是判断过程:为什么删空正文、为什么评分用中位数补、为什么不直接 dropna。关键位置写一两句说明,后面复现、演示或整理投稿时都更方便。 ### 数据清洗说明
; `2 {1 |+ f# e% w% E0 i8 o8 Z- 正文为空的记录无法用于分词,删除;
{# {4 h9 D. J' }- 评分缺失先保留标记,再决定是否补齐;/ j) l/ d% w) o, }8 b3 z
- 情感标签为空时标记为 unknown,不直接猜测;( |2 x8 ?/ j5 X2 K v
- 去重按清洗后的正文进行。 七、Y:测试完说明后,快速切回代码格
5 Z# ^( f1 e/ {; R: M7 Y% R& `Y 可以把当前单元格转回代码格。例如先用 Markdown 写下“待检查:评分列是否能全部转换为数值”,确认需要处理后,按 Esc 再按 Y,直接改成下面的代码,不必重新插入单元格。 - df['rating'] = pd.to_numeric(df['rating'], errors='coerce')
+ A1 D* j! P! \' m% q0 v - print('评分缺失:', df['rating'].isna().sum())
复制代码 八、D、D:删除测试格前,先确认它没有影响后面的变量
/ P9 u& U* o- G0 y, ~+ G: \按 Esc 后连按两次 D,可以删除当前单元格。这个快捷键很快,但也容易误删。尤其是测试格很多时,要先看它是否定义了后面依赖的变量。 stop_words = {'这个', '那个', '然后', '就是'} 如果后面的分词代码还要用 stop_words,删掉定义单元格后,重新运行就会出现 NameError。测试代码可以删,但读取数据、清洗步骤和关键变量定义最好固定在前面。 九、H:记不住快捷键时,不要硬背
8 s6 e4 O5 ~' i; x4 K2 K: r# `按 Esc 后按 H,可以打开快捷键帮助。刚开始没必要一次记住全部快捷键。Shift + Enter、Ctrl + Enter、Alt + Enter、Esc / Enter、A / B、M / Y、D / D 和 Ctrl + S,已经覆盖大部分数据分析场景。 十、Ctrl + S:跑长任务前一定保存/ [9 t6 c; c6 q, ?# J5 L
Ctrl + S 是最简单但很容易忽略的一个。读完数据并确认字段后、清洗去重完成后、图表确认后,以及运行分词、LDA 或模型训练前,都建议保存一次。基础统计重新跑不难,但任务变长、变量变多后,阶段性保存能避免很多重复操作。 总结% M5 R. w: _, j% {. x
Notebook 快捷键不会让分析结果自动更准确,但能让过程更清楚、可复现,也更不容易因为运行顺序混乱而浪费时间。刚开始可以先练 Shift + Enter 连续跑流程、Ctrl + Enter 原地调图、Esc / Enter 切换模式、A / B 补充单元格、M 写清判断依据、Ctrl + S 保存阶段结果。 关键词
! Q- P4 l; ?4 V9 h( _Jupyter Notebook;Python;快捷键;pandas;评论数据分析;数据清洗
1 z2 `) f l* `! v3 E0 l, D$ E |