2017-10-12 49 views
1

只是進入python編程,我只是瞭解列表和字典。但是,現在我走出了自己的深度,我的谷歌讓我失望。正確的方法來分析字典列表中保存的Python數據

我寫了一個小程序,讀取成績形成一個CSV文件

def main(): 
    with open('test_data.csv') as csvfile: 
    reader = csv.DictReader(csvfile) 
    test_database = [] 
    for row in reader: 
     test_database.append(dict(username=row['username'], 
          subject=row['subject'], 
          dificulty=row['dificulty'], 
          answers=row['answers'], 
          questions=row['questions'],  
          percentage=row['percentage'],  
          grade=row['grade']))  
    csvfile.close() 
    print(test_database) 

,它使用下面的csv文件 test_data.csv

username,subject,dificulty,answers,questions,percentage,grade 
ian47,History,Hard,1,5,20.0,D 
ian47,Computer Science,Medium,5,5,75.0,B 

並生成以下數據

[{'username': 'ian47', 'dificulty': 'Hard', 'questions': '5', 'grade': 'D', 'percentage': '20.0', 'answers': '1', 'subject': 'History'}, {'username': 'ian47', 'dificulty': 'Medium', 'questions': '5', 'grade': 'B', 'percentage': '75.0', 'answers': '5', 'subject': 'Computer Science'}] 

我的問題是如何最好的方式來操縱使用這些數據,我非常喜歡它格式化數據的方式,並且很容易理解,但是現在我很難檢索和操作這些數據。

我希望做到以下幾點: -

  • 顯示所有的結果一個人
  • 顯示最高/最低/平均分數每科目難度單人
  • 顯示每個科目和獲得它的人的最高分

如果有人能夠幫助並指出我對這些問題中的一個或兩個的正確方向,我相信我將能夠爲其餘的工作它

回答

0

這個問題可能太寬泛,但如果我是你,我會看着熊貓。隨着pd.read_csv你有一些非常像(原寫爲t.csv):

>>> import pandas as pd 
>>> t = pd.read_csv('t.csv') 
>>> t 
    username   subject dificulty answers questions percentage grade 
0 ian47   History  Hard  1   5  20.0  D 
1 ian47 Computer Science Medium  5   5  75.0  B 
>>> t[t['grade'] == 'B'] 
    username   subject dificulty answers questions percentage grade 
1 ian47 Computer Science Medium  5   5  75.0  B 
>>> t.at[0, 'username'] = 'frank' 
>>> t 
    username   subject dificulty answers questions percentage grade 
0 frank   History  Hard  1   5  20.0  D 
1 ian47 Computer Science Medium  5   5  75.0  B 
>>> t['percentage'].max() 
75.0 
>>> t.groupby(['subject', 'username'])['percentage'].max() 
subject   username 
Computer Science ian47  75.0 
History   ian47  20.0 
Name: percentage, dtype: float64 
>>> 
>>> t.to_csv('t.csv') 

然後,當我檢查t.csv內容,我得到:

username,subject,dificulty,answers,questions,percentage,grade 
ian47,History,Hard,1,5,20.0,D 
ian47,Computer Science,Medium,5,5,75.0,B 
相關問題