【发布时间】:2014-08-01 02:33:19
【问题描述】:
我有一个包含三列的 csv 文件:全名、Test_A_Score、Test_B_Score。 Test_A_Score 和 Test_B_Score 的范围为 0-10。我的目标是让 Test_A_Score 的每个唯一值都根据 Test_B_Score 的值创建一个直方图。
test_scores.csv
Full name Test_A_Score Test_B_Score
Jake Johnson 5 8
Helen Smith 9 6
.
.
.
Jonathan Pierce 3 8
到目前为止我的代码:
import pandas as pd
df = pd.read_csv('test_scores.csv', delimiter=',', na_values=['-'])
# Get rid of missing scores
df = df[(df['Test_A_Score'] >= 0) & (df['Test_B_Score'] >= 0)]
score_range = range(11)
data = []
for score in score_range:
scores = df[(df['Test_A_Score'] == score)]['Test_B_Score']
data.append(scores)
df_hist = pd.DataFrame(data, columns=score_range)
所以,我想我会为 score_range 获取测试 B 分数,创建一个新的数据框,插入数据并使用以下内容绘制列的直方图:
import matplotlib.pyplot as plt
plt.figure()
scores_df.hist(color='k', alpha=0.5, bins=20)
问题在于 score_range 中每个值的分数的长度不同,并且需要将数据作为行插入,而不是像在名为 data 的列表中那样作为列插入。
【问题讨论】:
-
你能提供
test_score.csv的样本吗? -
我添加了我的 csv 文件示例。
-
但是放一个有代表性的样本,以及对应的输出。我无法使用此示例重现某些内容。