pandas - 绘制多列值的频率
问题描述
我想创建两列中值出现频率的熊猫图。散点图将包含一条回归线。结果是带有回归线的类似热图的图。
解决方案
首先,将列“A”和“B”组合成一个唯一值。在这种情况下,两列都是数字,所以我使用加法。接下来使用 value_counts 创建频率。使用 pandas 散点图创建散点图/气泡图/热图。最后使用 numpy.polyfit 删除回归线。
combined = (plotdf['A']*plotdf['B'].nunique()+plotdf['B']) # combine numeric values of columns A and B
vcounts = combined.value_counts() # get value counts of combined values
frequency = combined.map(vcounts) # lookup count for each row
plt = plotdf.plot(x='A',y='B',c=frequency,s=frequency,colormap='viridis',kind='scatter',figsize=(16,8),title='Frequency of A and B')
plt.set(xlabel='A',ylabel='B')
x = plotdf['A'].values
y = plotdf['B'].values
m, b = np.polyfit(x, y, 1) # requires numpy
plt.plot(x, m*x + b, 'r') # r is color red
推荐阅读
- sql - 代替 ”?” 在 bigquery 表中带有“Ñ”
- python - 替换字母数字元素列表中的数字+单词
- javascript - “使用香草 JS 的图像滑块”不起作用。调试时,我得到“无法读取未定义的类列表”的错误
- linux - 创建从 SQL 到 Linux cent os 的链接服务器
- ffmpeg - 如果在视频后期捕获,ffmpeg 仍然会失败
- c# - 为什么会在 C# 类库中出现“无法加载文件或程序集..”
- c++ - 数组和函数
- arrays - 交换排序C数组中的最后一个元素问题
- ruby-on-rails - fastjsonapi 序列化程序错误 | NameError(未初始化的常量
) - selenium-webdriver - In protractor, how do I check if a table cell contains particular text?