擅长:python、mysql、java
<p>我的解决方案</p>
<pre><code>import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"target1": [10, 0, 15, 10], "target2": [50, 0, 20, 0], "ID": ["1", "2", "3", "4"]})
all = len(df["ID"])
value = [0, 0, 0]
for i in range(0, all):
b = False
if df["target1"][i] != 0:
value[0] += 1
b = True
if df["target2"][i] != 0:
value[1] += 1
b = True
if not b:
value[2] += 1
# or you can use this
# value = [float(len([col for col in df["target1"] if col > 0])) / all * 100,
# float(len([col for col in df["target2"] if col > 0])) / all * 100]
value = [(float(col) / all * 100) for col in value]
num_list = value
plt.bar(range(len(num_list)), num_list,
tick_label=["target1 " + str(value[0]) + "%",
"target2 " + str(value[1]) + "%",
"default " + str(value[2]) + "%"])
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/4M3ch.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4M3ch.png" alt="effect"/></a></p>