如何用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绘制水平线即可实现对应效果,步骤如下:
- 定位重复行索引:通过
df.duplicated()获取重复行的布尔标记,筛选出对应的行号(Python行索引默认从0开始,若要和R的1起始规则一致,可对索引加1) - 绘制水平线:利用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
相关产品推荐
相关产品推荐

