私は大規模なデータセットを持っており (以下のフォーマット例を参照)、次のことを行う必要があります:
- 列1、2、5に表示される繰り返し値を識別します-すべてが繰り返される場合、冗長な行を削除し、列8の値を平均する必要があります(これは、投稿するコードで成功します-
- ステップ 1 の後、列 1、2 の値を整数 (小数点なし) に丸めたい
- 列 3、4、6、および 7 を再導入したい -
列 3、6、および 7 には、指定する特定の値が必要です (たとえば、3 はすべて 0、6 はすべて 1、列 7 はすべて 1 にする必要があります) (同様に入力ファイル) 列 4 の異なる値の数に基づいて、列 4 を 1 ずつ増やす必要があります) (入力ファイルと同様)
サンプルの入力ファイルは次のとおりです: data (ファイルの名前)
564991.15 7371277.89 0 1 1530 1 1 16.0225
564991.15 7371277.89 0 1 8250 1 1 14.4405
564991.15 7371277.89 0 2 1530 1 1 14.8637
564991.15 7371277.89 0 2 8250 1 1 14.8918
564991.17 7371277.89 0 3 1530 1 1 16.0002
564991.17 7371277.89 0 3 8250 1 1 15.4333
564991.04 7371276.76 0 4 1530 1 1 14.73
564991.04 7371276.76 0 4 8250 1 1 15.6138
564991.04 7371276.76 0 5 1530 1 1 16.2453
564991.04 7371276.76 0 5 8250 1 1 15.6138
そして、これが私が知っているコードです(現在、私はcalcで補足しています)
import os
import numpy as np
import pandas as pd
datadirectory = '/media/data'
os.chdir = 'datadirectory'
df = pd.read_csv('/media/data/data.dat')
sorted_data = df.groupby(["X.1","X.2","X.5"])["X.8"].mean().reset_index()
tuple_data = [tuple(x) for x in sorted_data.values]
datas = np.asarray(tuple_data)
np.savetxt('sorted_data_rounded.dat', datas, fmt='%s', delimiter='\t')
しかし、彼は私に4列しか与えず、丸められたデータは与えません....