ホームページ >バックエンド開発 >Python チュートリアル >Python が CSV ファイルを読み取り、列を削除し、新しいファイルを書き込む技術チュートリアル
この記事では主に、Python で csv ファイルを読み取り、列を削除して新しいファイルを書き込む例を紹介します。これは非常に参考になるので、皆さんのお役に立てれば幸いです。エディターをフォローして見てみましょう。これが皆さんの Python の習得に役立つことを願っています
私はこの問題を解決するために 2 つの方法を使用しました。どちらもインターネット上に存在する解決策です。
シナリオの説明:
テキスト モードで保存されたデータ ファイルには、user_id、plan_id、mobile_id の 3 つの列があります。目標は、mobile_id、plan_id のみを使用して新しいファイルを取得することです。
解決策
オプション1:Pythonを使用してファイルを開いて書き込み、データを直接読み取り、forループでデータを処理して、新しいファイルに書き込みます。
コードは次のとおりです:
def readwrite1( input_file,output_file): f = open(input_file, 'r') out = open(output_file,'w') print (f) for line in f.readlines(): a = line.split(",") x=a[0] + "," + a[1]+"\n" out.writelines(x) f.close() out.close()
オプション2:パンダを使用してデータをDataFrameに読み取り、データを分割し、DataFrameの書き込み関数を直接使用して書き込みます。新しいファイル
コードは次のとおりです:
def readwrite2(input_file,output_file): date_1=pd.read_csv(input_file,header=0,sep=',') date_1[['mobile', 'plan_id']].to_csv(output_file, sep=',', header=True,index=False)
コードの観点から見ると、pandas のロジックがより明確になります。
実行効率を見てみましょう!
def getRunTimes( fun ,input_file,output_file): begin_time=int(round(time.time() * 1000)) fun(input_file,output_file) end_time=int(round(time.time() * 1000)) print("读写运行时间:",(end_time-begin_time),"ms") getRunTimes(readwrite1,input_file,output_file) #直接撸数据 getRunTimes(readwrite2,input_file,output_file1) #使用dataframe读写数据
読み取りと書き込みの実行時間: 976 ms
読み取りと書き込みの実行時間: 777 ms
input_file のデータ量は、for ループの場合よりもまだ高速です。データが大きいほど、効果はより顕著になりますか?
次に、input_file レコードの数を増やしてみます。結果は次のようになります。
input_file | 読み取り書き込み1 | 読み取り書き込み2 |
27W | 976 | 777 |
55W | 1989 | 1509 |
110W | 4312 | 3158 |
上記のテスト結果より、データフレームの効率が向上しています約30%ほど増加します。
関連する推奨事項:
詳しい例とともに Python を使用してディレクトリ内のファイルをフィルタリングおよび削除する
以上がPython が CSV ファイルを読み取り、列を削除し、新しいファイルを書き込む技術チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。