2016-11-11 14 views
-1

CSV入力ファイル(appsUsage.csv)を読み込み、ユーザーごとのアプリの使用頻度をカウントする出力ファイルを生成するPythonアプリケーションを作成する必要があります。入力ファイルの最初の列にはユーザーID(user_id)が含まれ、2番目の列にはアプリ名(app_name)が含まれます。 appsUsage.csvから、個々のユーザーごとにアプリの使用頻度をカウントしてapp_Rankを生成し、appsIndividualUsage.csvという名前の新しいデータセットに変換する必要があります。 app_name; app_Rank。例えば データcsvファイルを抽出してPythonで別のファイルに書き込む

appsUsage.csvには、次のしている場合のイベント

a facebook 
a facebook 
a linkedin 
b google 
b yahoo 
b yahoo 

その後appsIndividualUsage.csvは次のようになります。

import csv 
with open("C:\\Users\\anne\\Desktop\\appsUsage.csv", mode='r') as f_in, 
open("C:\\Users\\anne\\Desktop\\appsIndividualUsage.csv", mode='w', newline='') 
as f_out: 
     f_reader = csv.reader(f_in, dialect=csv.excel_tab) 
     f_writer = csv.writer(f_out, dialect=csv.excel_tab) 
     for line in reader: 
      if line is equal then write it in writer and add a row of frequency 

ここ
a facebook 2; 
a linkedin 1; 
b google 1; 
b yahoo 2; 

は私が苦労しています私のコードです

私はコードの最後の行を書く方法を全く知らない。

+0

「appsUsage.csv」からデータを解析する方法は、まず必要なデータを保存してから、「appsIndividualUsage.csv」を作成してデータを1回書きます。 – Swanand

答えて

0

Pythonはこれを行うためにCounter()を提供しています。これは、それに追加されたキーを数えるために使用できるオブジェクトのような辞書です。この場合、辞書のキーはユーザーの名前とアプリケーションの組み合わせです。

まず入力CSVファイルのすべてのエントリを読み取り、数えます。あなたがCounter()を使用することを許可されていない場合は

a facebook 2 
a linkedin 1 
b google 1 
b yahoo 2 

、その後、あなたが希望:次のように

from collections import Counter  
import csv 

usage_counts = Counter() 

with open('appsUsage.csv') as f_in: 
    f_reader = csv.reader(f_in, dialect=csv.excel_tab) 

    for user, application in f_reader: 
     usage_counts[(user, application)] += 1 

with open("appsIndividualUsage.csv", mode='w', newline='') as f_out: 
    f_writer = csv.writer(f_out, dialect=csv.excel_tab) 

    for (user, application), count in sorted(usage_counts.items(), key=lambda x: (x[0], x[1])): 
     f_writer.writerow([user, application, count]) 

これはあなたのCSVファイルを与える:次のように出力CSVファイルにソートされたカウントを書きます通常の辞書を使用し、既存のキーに1を追加する必要があります。

関連する問題