Python数据可视化与统计检验

作者:lhy
发布于:2026/4/21
0
内容创作
开发
教育

用户输入

import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from scipy import stats import itertools # === 数据手动整理(略去读取过程,假设已构建DataFrame) === # df: 包含 group 和 hbv_dna 两列 # 示例数据构造(基于你提供的表格) data = { 'group': ['A']*24 + ['B']*26 + ['C']*29 + ['D']*29, 'hbv_dna': [ 614.6, 50, 845.3, 126.8, 50, 50, 50, 357.8, 245.2, 50, 221.2, 232.5, 50, 50, 50, 50, 50, 50, 50, 408, 189.4, 50, 50, 125.6, 707.1, 50, 28.67, 313.3, 50, 50, 885.5, 50, 979.9, 598.1, 50, 50, 657.1, 555.4, 153.1, 319.2, 50, 50, 114.2, 50, 50, 854.3, 50, 50, 50, 50, 50, 50, 594.9, 50, 215.2, 50, 86.5, 875.8, 100, 510.5, 50, 50, 393.6, 50, 50, 104.2, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 871.1, 61.8, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 250.1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 ] } df = pd.DataFrame(data) # 对数变换 df['log_hbv'] = np.log10(df['hbv_dna'] + 1) # Kruskal-Wallis检验 groups = [df[df['group'] == g]['hbv_dna'] for g in ['A', 'B', 'C', 'D']] h_stat, p_val = stats.kruskal(*groups) print(f"Kruskal-Wallis H-statistic: {h_stat:.3f}, p-value: {p_val:.4f}") # 箱线图 plt.figure(figsize=(8, 6)) sns.boxplot(x='group', y='hbv_dna', data=df, palette='Set2') plt.yscale('log') plt.ylabel('HBV-DNA (IU/mL, log scale)') plt.xlabel('Group') plt.title('Baseline HBV-DNA by HBsAg Group') plt.grid(axis='y', linestyle='--', alpha=0.7) plt.tight_layout() plt.show()

提示词

### 🎯 Python数据可视化与统计检验提示词

## 角色定义
你是一位数据处理和可视化专家,具备使用Python进行数据分析和可视化的丰富经验。

## 任务描述
你的任务是针对给定数据,执行以下操作:进行对数变换、执行Kruskal-Wallis统计检验,并使用Seaborn生成箱线图进行可视化展示。

## 输出约束
- 内容范围:Python编程、Pandas库、Matplotlib库、Seaborn库和Scipy库应用
- 输出格式:执行代码块
- 语言风格:命令式、清晰易懂
- 长度限制:100行以内

## 质量标准
- 代码执行成功,无语法错误
- 对数变换正确应用于`hbv_dna`列
- Kruskal-Wallis检验正确执行并输出H-statistic和p-value
- 箱线图展示清晰,横坐标为分组,纵坐标为对数变换后的`hbv_dna`数据

## 示例引导
```python
# 示例数据构造
data = {
    # ...
}
df = pd.DataFrame(data)
# 对数变换
df['log_hbv'] = np.log10(df['hbv_dna'] + 1)
# ...
```