4

次の形式のtxtファイルがあります(簡略化):

date                 this that other
2007-05-25 11:00:00  10   20   30
2007-05-25 11:10:00  15   18   30
2007-05-25 11:20:00  10   27   30
2007-05-25 11:30:00  20   35   30
2007-05-25 11:50:00  30   20   
2007-05-25 12:00:00  30   13   
2007-05-25 12:10:00  30   13   

最初の raw は、その上の列を定義する文字列です。最初の列は時間であることは明らかです。一部の値が欠落していることも確認できます。一部の値が欠落している行を消去したくありません。後でそのデータを使用していくつかの計算を行いたいので、numpy を使用してそのデータをインポートすることを考えましたnumpy.loadtxt

data = numpy.loadtxt('data.txt')

ValueError: could not convert string to float: b'date'最初の raw が原因でエラーが発生します。使用:

data = numpy.genfromtxt('data.txt')

Line #51028 (got 38 columns instead of 37)一部の値が欠落しているため、多くの行でエラーが発生します。何を試してみるべきですか?

4

2 に答える 2

5

Pandasは NumPy ベースのライブラリです。とりわけ、不完全なデータでもうまく機能するように作られています。

簡単にパンダをインストールできるはずです:

$ pip install pandas

サンプル ファイルをhttp://pastebin.com/NuNaTW9nに保存し、列間のスペースをタブに置き換えました。

>>> import pandas as pd
>>> from urllib import urlopen
>>> df = pd.read_csv(urlopen("http://pastebin.com/raw.php?i=NuNaTW9n"), sep='\t')
>>> df
                  date  this  that  other
0  2007-05-25 11:00:00    10    20     30
1  2007-05-25 11:10:00    15    18     30
2  2007-05-25 11:20:00    10    27     30
3  2007-05-25 11:30:00    20    30    NaN
4  2007-05-25 11:50:00    30    20    NaN
5  2007-05-25 12:00:00    30    13    NaN
6  2007-05-25 12:10:00    30    13    NaN

データ フレームのハンドルを取得したら、データの探索を開始できます。

>>> df["this"].sum()
145

>>> df["that"].mean()
20.142857142857142

>>> df[df["that"] < 20]["date"]
1    2007-05-25 11:10:00
5    2007-05-25 12:00:00
6    2007-05-25 12:10:00

デフォルトでは、pandas は値に最適なデータ型を推測しようとします (たとえば、 であるdf["that"]べきだと推測します) が、引数を にint64渡すことでこの動作を制御できます。dtyperead_csv

于 2015-05-04T12:53:01.220 に答える