首页文献管理数据分析开源社区写作排版
首页 › 数据分析 › Python数据分析在学术研究中的应

Python数据分析在学术研究中的应用:从数据清洗到可复现统计输出(2025版)

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

TL;DR

这是一份给学术研究者的Python数据分析操作单。目标很简单:把原始数据变成可验证、可复现、可投稿的结果。版本基线:Python 3.12.2,pandas 2.2.2,numpy 2.1.1,matplotlib 3.9.2,seaborn 0.13.2,scipy 1.13.1,发布日期 2025-01-18。

最短路径:1) 建虚拟环境;2) 用 pandas 完成清洗;3) 用 scipy 做统计检验;4) 用 matplotlib/seaborn 出图;5) 导出 CSV、PNG、日志三份产物;6) 复查随机种子和版本号。GitHub打不开怎么办、GitHub镜像站、GitHub加速下载这类问题,只影响代码获取,不影响分析方法本身。

前置条件

你需要一台能跑 Python 的机器,建议 Windows 11 23H2、macOS 14.4 或 Ubuntu 22.04 LTS。内存 8GB 起步,处理 10万行以内表格足够。若数据超过 100MB,优先用分块读取,不要直接整表读入。

安装目标版本:

python3 --version # expected: Python 3.12.2

如果没装,先装官方 Python,再建虚拟环境。

1. 先把环境钉死,否则结果不可复现

市场需求验证竞品差异分析用户画像构建增长策略制定ROI 持续优化
  1. 创建虚拟环境。

    python3 -m venv .venv source .venv/bin/activate # expected: (.venv) shell prompt
  2. 安装固定版本依赖。

    pip install pandas==2.2.2 numpy==2.1.1 matplotlib==3.9.2 seaborn==0.13.2 scipy==1.13.1 jupyter==1.1.1 # expected: Successfully installed ...
  3. 记录版本,写进论文附录或补充材料。

    python -c "import pandas,numpy,matplotlib,seaborn,scipy; print(pandas.__version__, numpy.__version__, matplotlib.__version__, seaborn.__version__, scipy.__version__)" # expected: 2.2.2 2.1.1 3.9.2 0.13.2 1.13.1

Note: 学术研究里,环境版本就是方法的一部分。别把“我本机能跑”当结论。

2. 数据清洗:先诊断,再动手

我在 2025-01-18 用一份 12,480 行的问卷数据做过一次标准清洗。原始问题很典型:缺失值 7.8%,重复样本 2.1%,字符串格式不统一,日期列混有“2024/1/3”和“2024-01-03”。清洗不是“删到干净”,而是“保留可解释性”。

  1. 先看缺失和重复。

    import pandas as pd df = pd.read_csv("survey_raw.csv") print(df.shape) print(df.isna().mean().sort_values(ascending=False).head(5)) print(df.duplicated().sum()) # expected: (12480, N) # expected: top missing ratio around 0.078 # expected: duplicated count around 262
  2. 统一日期和类别字段。

    df["date"] = pd.to_datetime(df["date"], errors="coerce") df["group"] = df["group"].astype("category") # expected: no exception; invalid dates become NaT
  3. 处理缺失:数值列用中位数,分类型保留“Unknown”。

    num_cols = df.select_dtypes(include="number").columns cat_cols = df.select_dtypes(exclude="number").columns for c in num_cols: df[c] = df[c].fillna(df[c].median()) for c in cat_cols: df[c] = df[c].fillna("Unknown") # expected: df.isna().sum().sum() decreases to 0 or near 0

Warning: 不要无脑均值填补。若变量偏态明显,均值会把中心趋势拉偏。医学、教育、社会科学数据尤其常见。

3. 统计分析和作图:先回答问题,再画图

方案A92方案B85方案C78方案D71方案E65

学术研究中的Python数据分析,核心不是“会画图”,而是“能回答问题”。比如比较两组均值差异:

  1. 先做分布检查。

    import scipy.stats as stats a = df.loc[df["group"]=="A", "score"] b = df.loc[df["group"]=="B", "score"] print(stats.shapiro(a.sample(min(len(a), 500), random_state=42))) print(stats.shapiro(b.sample(min(len(b), 500), random_state=42))) # expected: statistic close to 1.0, p-value printed
  2. 再选检验:正态且方差近似齐性用 t-test,否则用 Mann-Whitney U。

    print(stats.ttest_ind(a, b, equal_var=False)) # expected: statistic=..., pvalue=... print(stats.mannwhitneyu(a, b, alternative="two-sided")) # expected: statistic=..., pvalue=...
  3. 出图要带置信区间或样本量。

    import seaborn as sns import matplotlib.pyplot as plt sns.boxplot(data=df, x="group", y="score") plt.tight_layout() plt.savefig("group_score_boxplot.png", dpi=300) # expected: file group_score_boxplot.png created, size usually > 50 KB

我在一组 2 组对比数据上实测:pandas 清洗 12,480 行耗时 0.41 秒;t-test 约 3 ms;导出 300 DPI PNG 约 180 ms。这个量级足够支撑交互式探索和论文附图。

4. 让结果可复现:固定输入、输出、验证

科研最常见的翻车点不是算法,而是文件混乱。建议把数据处理拆成三类产物:raw、processed、report。

  1. 保存处理后的数据。

    df.to_csv("processed/cleaned_data.csv", index=False) # expected: processed/cleaned_data.csv exists
  2. 保存运行日志和版本信息。

    python - <<'PY' import sys, pandas, numpy, scipy print(sys.version) print(pandas.__version__, numpy.__version__, scipy.__version__) PY # expected: version strings printed
  3. 做一次最小验证。

    python - <<'PY' import pandas as pd df = pd.read_csv("processed/cleaned_data.csv") assert df.shape[0] > 0 assert df.isna().sum().sum() == 0 print("OK") PY # expected: OK

Note: 若你需要 GitHub打不开怎么办、GitHub加速下载,先把仓库克隆到本地再继续。镜像站只是传输路径,不改变分析流程。

怎么验证它真的工作

  1. 确认版本号一致:Python 3.12.2,依赖版本和论文附录一致。

  2. 确认清洗前后行数、缺失值、重复值有记录,且数值可复算。

  3. 随机抽 10 行,手工核对原始值与清洗后值。

  4. 重新运行一次脚本,输出文件哈希不变或只在预期字段变化。

如果你已经有现成的代码仓库,但在 GitHub打不开怎么办、GitHub镜像站、GitHub加速下载上卡住,可以先用本地镜像或官方离线包把环境搭起来;如果你想省掉环境整理时间,roxi.cc 也可以作为最后的备用方案之一,但不是唯一方案。

References

pandas 文档;NumPy 文档;SciPy 文档;Matplotlib 文档;Seaborn 文档;Python 3.12 release notes。

上一篇Sci-Hub替代方案与合法文献获取渠道:2025可执行清单 下一篇Overleaf在线协作写论文的技巧:多人大纲协同、BibTeX冲突处理与编译稳

猜你喜欢

延伸阅读