You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python基于Pandas Series绘制重复行的水平线可视化

用Python实现重复行的水平线可视化

需求:将数据框中的重复行以黑色水平线的形式可视化,对应下述R代码的功能,已知可通过df.duplicated()获取重复行标记,但不清楚如何实现可视化。

原R代码及效果

# 获取重复行的行号
duplicated_rows <- data_frame(duplicated = duplicated(ign_data), row = 1:nrow(ign_data)) %>%
    filter(duplicated == T)

# 将重复行绘制成黑色线条
ggplot(duplicated_rows, aes(xintercept = row)) +
    geom_vline(aes(xintercept = row)) + # 为每个重复行绘制一条黑色线条
    ggtitle("Indexes of duplicated rows") + # 添加标题
    coord_flip() + scale_x_reverse() # 翻转坐标轴并反转X轴

重复行行号可视化图表

Python实现方案

用pandas定位重复行,结合matplotlib绘制水平线即可实现对应效果,步骤如下:

  1. 定位重复行索引:通过df.duplicated()获取重复行的布尔标记,筛选出对应的行号(Python行索引默认从0开始,若要和R的1起始规则一致,可对索引加1)
  2. 绘制水平线:利用matplotlib的axhline()绘制每条重复行对应的水平线,再调整坐标轴和标题匹配R代码的输出效果

完整代码示例

import pandas as pd
import matplotlib.pyplot as plt

# 假设你的数据框为df
# 1. 获取重复行的行号(转为1起始,和R保持一致)
duplicated_rows = df.index[df.duplicated()] + 1  # 不需要1起始则去掉+1

# 2. 绘图设置
plt.figure(figsize=(6, 8))
# 为每个重复行绘制黑色水平线
for row_num in duplicated_rows:
    plt.axhline(y=row_num, color='black', linewidth=1)

# 调整坐标轴与标题,匹配R代码的可视化效果
plt.title("Indexes of duplicated rows")
plt.ylim(df.shape[0] + 1, 0)  # 反转Y轴,对应R的scale_x_reverse()+coord_flip()
plt.ylabel("Row Index")
plt.xlabel("")  # 隐藏X轴标签,和原图一致
plt.show()

代码说明

  • df.index[df.duplicated()]直接提取重复行的0起始索引,加1后和R的1起始行号规则对齐
  • plt.axhline()绘制水平线,对应R代码翻转坐标轴后的竖线展示效果
  • plt.ylim(df.shape[0]+1, 0)反转Y轴方向,让行号从顶部开始递减,还原R代码的坐标轴逻辑

内容的提问来源于stack exchange,提问作者mjbsgll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:21:26