对于数据绝对值差异较大(数据离散)
1. 对数坐标直方图(Histogram with Log Scale)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np# 示例数据
data = {'count': [10, 20, 55, 90, 15, 5, 45, 80, 1000, 1500, 2000]}
df = pd.DataFrame(data)# 绘制直方图,使用对数刻度
plt.figure(figsize=(10, 6))
plt.hist(df['count'], bins=50, log=True, color='skyblue', edgecolor='black')
plt.xlabel('Count 值')
plt.ylabel('频数 (对数刻度)')
plt.title('Count 分布直方图 (Log Scale)')
plt.show()
2. 箱线图
展示数据的分布范围、中位数,以及可能的异常值。
plt.figure(figsize=(8, 6))
plt.boxplot(df['count'], vert=False, patch_artist=True, boxprops=dict(facecolor='lightblue'))
plt.xlabel('Count 值')
plt.title('Count 分布箱线图')
plt.show()
3. 分区频率柱状图
# 分区数据
below_100 = df[df['count'] <= 100]['count']
above_100 = df[df['count'] > 100]['count']# 分别绘制两个直方图
fig, axes = plt.subplots(1, 2, figsize=(14, 6), sharey=True)# Count <= 100 的直方图
axes[0].hist(below_100, bins=20, color='skyblue', edgecolor='black')
axes[0].set_title('Count <= 100 分布')
axes[0].set_xlabel('Count 值')
axes[0].set_ylabel('频数')# Count > 100 的直方图
axes[1].hist(above_100, bins=10, color='orange', edgecolor='black')
axes[1].set_title('Count > 100 分布')
axes[1].set_xlabel('Count 值')plt.tight_layout()
plt.show()
4. 累积分布图
sorted_counts = df['count'].sort_values()
cdf = sorted_counts.rank(method='dense', pct=True)plt.figure(figsize=(10, 6))
plt.plot(sorted_counts, cdf, marker='.', linestyle='none', color='blue')
plt.xlabel('Count 值')
plt.ylabel('累计百分比')
plt.title('Count 累计分布图 (CDF)')
plt.grid(True)
plt.show()