ホームページ  >  記事  >  バックエンド開発  >  Python が CSV ファイルを読み取り、列を削除し、新しいファイルを書き込む技術チュートリアル

Python が CSV ファイルを読み取り、列を削除し、新しいファイルを書き込む技術チュートリアル

小云云
小云云オリジナル
2017-12-30 13:23:552330ブラウズ

この記事では主に、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 NLP の簡単な紹介

Python ユーザー管理システムを説明する例

以上がPython が CSV ファイルを読み取り、列を削除し、新しいファイルを書き込む技術チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。