バージョン 0.12.0 (2013年7月24日)#

これは 0.11.0 からのメジャーリリースであり、多数のバグ修正に加え、いくつかの新機能と機能強化が含まれています。

ハイライトには、一貫性のある I/O API 命名スキーム、html を読み込むルーチン、MultiIndex を csv ファイルに書き込むルーチン、STATA データファイルを読み書きするルーチン、JSON 形式ファイルを読み書きするルーチン、HDFStore の Python 3 サポート、filter による groupby 式のフィルタリング、正規表現を受け入れる刷新された replace ルーチンが含まれます。

APIの変更点#

  • I/O API は、pd.read_csv() のようにアクセスされ、一般的に pandas オブジェクトを返す一連のトップレベルの reader 関数により、はるかに一貫性のあるものになりました。

    • read_csv

    • read_excel

    • read_hdf

    • read_sql

    • read_json

    • read_html

    • read_stata

    • read_clipboard

    対応する writer 関数は、df.to_csv() のようにアクセスされるオブジェクトメソッドです。

    • to_csv

    • to_excel

    • to_hdf

    • to_sql

    • to_json

    • to_html

    • to_stata

    • to_clipboard

  • Series、DataFrame の剰余演算と整数除算を、float dtype と同様に動作するように修正し、適切に np.nan または np.inf を返すようにしました (GH 3590)。これは、integerfloat の dtype を異なる方法で扱う numpy のバグを修正します。

    In [1]: p = pd.DataFrame({"first": [4, 5, 8], "second": [0, 0, 3]})
    
    In [2]: p % 0
    Out[2]: 
       first  second
    0    NaN     NaN
    1    NaN     NaN
    2    NaN     NaN
    
    In [3]: p % p
    Out[3]: 
       first  second
    0    0.0     NaN
    1    0.0     NaN
    2    0.0     0.0
    
    In [4]: p / p
    Out[4]: 
       first  second
    0    1.0     NaN
    1    1.0     NaN
    2    1.0     1.0
    
    In [5]: p / 0
    Out[5]: 
       first  second
    0    inf     NaN
    1    inf     NaN
    2    inf     inf
    
  • groupbysqueeze キーワードを追加し、グループが一意である場合に DataFrame -> Series への削減を可能にしました。これは 0.10.1 からの回帰です。以前の動作に戻しています。これは、グループが一意であるかどうかにかかわらず、groupby が同じ形状のオブジェクトを返すことを意味します。この問題を (GH 2893) から (GH 3596) で元に戻しました。

    In [2]: df2 = pd.DataFrame([{"val1": 1, "val2": 20},
       ...:                     {"val1": 1, "val2": 19},
       ...:                     {"val1": 1, "val2": 27},
       ...:                     {"val1": 1, "val2": 12}])
    
    In [3]: def func(dataf):
       ...:     return dataf["val2"] - dataf["val2"].mean()
       ...:
    
    In [4]: # squeezing the result frame to a series (because we have unique groups)
       ...: df2.groupby("val1", squeeze=True).apply(func)
    Out[4]:
    0    0.5
    1   -0.5
    2    7.5
    3   -7.5
    Name: 1, dtype: float64
    
    In [5]: # no squeezing (the default, and behavior in 0.10.1)
       ...: df2.groupby("val1").apply(func)
    Out[5]:
    val2    0    1    2    3
    val1
    1     0.5 -0.5  7.5 -7.5
    
  • ラベルベースのインデクサマスク (例: ブール値の Series) でブールインデックスを使用する場合、たとえ整数ラベルであっても iloc でエラーを発生させるようにしました。 iloc は純粋に位置ベースであるため、Series のラベルは整合できません (GH 3631)

    このケースはめったに使用されず、代替手段は豊富にあります。これにより、iloc API は 純粋に 位置ベースであるという特性が保たれます。

    In [6]: df = pd.DataFrame(range(5), index=list("ABCDE"), columns=["a"])
    
    In [7]: mask = df.a % 2 == 0
    
    In [8]: mask
    Out[8]: 
    A     True
    B    False
    C     True
    D    False
    E     True
    Name: a, dtype: bool
    
    # this is what you should use
    In [9]: df.loc[mask]
    Out[9]: 
       a
    A  0
    C  2
    E  4
    
    # this will work as well
    In [10]: df.iloc[mask.values]
    Out[10]: 
       a
    A  0
    C  2
    E  4
    

    df.iloc[mask]ValueError を発生させます。

  • プロット関数への raise_on_error 引数は削除されました。代わりに、プロット関数は、オブジェクトの dtypeobject の場合、TypeError を発生させます。これは、可能な限り object 配列の使用を避け、何かをプロットする必要がある場合は適切な数値 dtype にキャストすべきであることを示すためです。

  • DataFrame のプロットメソッドに colormap キーワードを追加しました。これは matplotlib のカラーマップオブジェクト (例: matplotlib.cm.jet) またはそのようなオブジェクトの文字列名 (例: 'jet') を受け入れます。カラーマップは各列の色を選択するためにサンプリングされます。詳細については、カラーマップ を参照してください。 (GH 3860)

  • DataFrame.interpolate() は非推奨になりました。DataFrame.fillna() および DataFrame.replace() を代わりに使用してください。 (GH 3582, GH 3675, GH 3676)

  • DataFrame.replace()method および axis 引数は非推奨になりました。

  • DataFrame.replaceinfer_types パラメータは削除され、デフォルトで変換が実行されるようになりました。 (GH 3907)

  • DataFrame.insert にキーワード allow_duplicates を追加しました。 True の場合、重複する列の挿入を許可し、デフォルトは False (0.12 より前と同じ) です。 (GH 3679)

  • NDFrame オブジェクトの __nonzero__ を実装しました (GH 3691, GH 3696)

  • IO API

    • トップレベル関数 read_excel を追加し、以下の機能を置き換えました。元の API は非推奨であり、将来のバージョンで削除されます。

      from pandas.io.parsers import ExcelFile
      
      xls = ExcelFile("path_to_file.xls")
      xls.parse("Sheet1", index_col=None, na_values=["NA"])
      

      とともに

      import pandas as pd
      
      pd.read_excel("path_to_file.xls", "Sheet1", index_col=None, na_values=["NA"])
      
    • 以下の機能と同等のトップレベル関数 read_sql を追加しました。

      from pandas.io.sql import read_frame
      
      read_frame(...)
      
  • DataFrame.to_htmlDataFrame.to_latex が最初の引数にパスを受け入れるようになりました (GH 3702)

  • datetime64[ns] に対する astypes を object 以外には許可せず、timedelta64[ns]object/int にのみ許可するようにしました (GH 3425)

  • datetime64 dtype の動作が、特定のいわゆる削減操作に関して変更されました (GH 3726)。以下の操作は、Series に対して実行されると TypeError を発生させ、DataFrame に対して実行されると 空の Series を返します。これは、例えば slice オブジェクトの DataFrame に対してこれらの操作を実行するのと同様です。

    • sum, prod, mean, std, var, skew, kurt, corr, および cov

  • read_html は読み込み時にデフォルトで None となり、lxml が解析に失敗した場合は bs4 + html5lib にフォールバックするようになりました。成功するまで試行するパーサーのリストも有効です。

  • 内部の pandas クラス階層が (わずかに) 変更されました。以前の PandasObjectPandasContainer と呼ばれるようになり、新しい PandasObjectPandasContainer および IndexCategoricalGroupBySparseListSparseArray (+ それらの基底クラス) の基底クラスになりました。現在、PandasObject は文字列メソッド (StringMixin から) を提供しています。 (GH 4090, GH 4092)

  • 新しい StringMixin は、__unicode__ メソッドが与えられると、Python 2 と Python 3 互換の文字列メソッド (__str____bytes__、および __repr__) を取得します。さらに、全体を通して文字列の安全性が確保されています。現在、pandas ライブラリの多くの場所で採用されています。 (GH 4090, GH 4092)

IOの拡張#

  • pd.read_html() は、HTML文字列、ファイル、またはURLを解析し、DataFramesを返すことができるようになりました(@cpcloud氏のご協力による)。(GH 3477, GH 3605, GH 3606, GH 3616). 単一のパーサーバックエンド (BeautifulSoup4 + html5lib) で動作します。ドキュメントを参照してください

    pd.read_html() を使用して、DataFrame.to_html() の出力を次のように読み取ることができます。

    In [11]: df = pd.DataFrame({"a": range(3), "b": list("abc")})
    
    In [12]: print(df)
       a  b
    0  0  a
    1  1  b
    2  2  c
    
    In [13]: html = df.to_html()
    
    In [14]: alist = pd.read_html(html, index_col=0)
    
    In [15]: print(df == alist[0])
          a     b
    0  True  True
    1  True  True
    2  True  True
    

    ここで alist は Python list であるため、pd.read_html()DataFrame.to_html() は逆操作ではないことに注意してください。

    • pd.read_html() は、日付文字列の厳密な変換を実行しなくなりました (GH 3656)。

    警告

    BeautifulSoup4 の古いバージョンをインストールする必要がある場合があります。インストールに関するドキュメントを参照してください

  • Stata ファイルの読み書きのためのモジュール: pandas.io.stata を追加しました (GH 1512)。これは、読み込み用のトップレベル関数 read_stata と、書き込み用の DataFrame メソッド to_stata を介してアクセスできます。ドキュメントを参照してください

  • JSON 形式ファイルの読み書きのためのモジュール: pandas.io.json を追加しました。read_json トップレベル関数で読み込み、to_json DataFrame メソッドで書き込みます。ドキュメントを参照してください。さまざまな問題に対応 (GH 1226, GH 3804, GH 3876, GH 3867, GH 1305)。

  • csv 形式ファイルの読み書きにおける MultiIndex 列のサポート

    • read_csvheader オプションが、インデックスを読み取る行のリストを受け入れるようになりました。

    • tupleize_cols オプションは、to_csvread_csv の両方で指定できるようになり、0.12 より前のバージョンの MultIndex 列の読み書き動作 (タプルのリストを使用) との互換性を提供します。0.12 のデフォルトでは、タプルのリストを書き込み、タプルのリストを MultiIndex 列として 解釈しません

      注: 0.12 のデフォルト動作は以前のバージョンから変更されていませんが、0.13 からは、MultiIndex 列の書き込みと読み込みのデフォルトは新しい形式になります。 (GH 3571, GH 1651, GH 3141)

    • index_col が指定されていない場合 (例: インデックスがない場合、または df.to_csv(..., index=False で書き込んだ場合)、列インデックス上のすべての names失われます

      In [16]: mi_idx = pd.MultiIndex.from_arrays([[1, 2, 3, 4], list("abcd")], names=list("ab"))
      
      In [17]: mi_col = pd.MultiIndex.from_arrays([[1, 2], list("ab")], names=list("cd"))
      
      In [18]: df = pd.DataFrame(np.ones((4, 2)), index=mi_idx, columns=mi_col)
      
      In [19]: df.to_csv("mi.csv")
      
      In [20]: print(open("mi.csv").read())
      c,,1,2
      d,,a,b
      a,b,,
      1,a,1.0,1.0
      2,b,1.0,1.0
      3,c,1.0,1.0
      4,d,1.0,1.0
      
      
      In [21]: pd.read_csv("mi.csv", header=[0, 1, 2, 3], index_col=[0, 1])
      Out[21]: 
      c                    1                  2
      d                    a                  b
      a   Unnamed: 2_level_2 Unnamed: 3_level_2
      1                  1.0                1.0
      2 b                1.0                1.0
      3 c                1.0                1.0
      4 d                1.0                1.0
      
  • Python3 での HDFStore (via PyTables 3.0.0) のサポート

  • read_hdf を介したイテレータサポートにより、イテレーション終了時にストアを自動的に開閉します。これは テーブル のみに適用されます。

    In [25]: path = 'store_iterator.h5'
    
    In [26]: pd.DataFrame(np.random.randn(10, 2)).to_hdf(path, 'df', table=True)
    
    In [27]: for df in pd.read_hdf(path, 'df', chunksize=3):
       ....:     print(df)
       ....:
              0         1
    0  0.713216 -0.778461
    1 -0.661062  0.862877
    2  0.344342  0.149565
              0         1
    3 -0.626968 -0.875772
    4 -0.930687 -0.218983
    5  0.949965 -0.442354
              0         1
    6 -0.402985  1.111358
    7 -0.241527 -0.670477
    8  0.049355  0.632633
              0         1
    9 -1.502767 -1.225492
    
  • read_csv は、ファイルに列が含まれていない場合(例:すべて改行文字の場合)、より情報量の多いエラーメッセージを出すようになりました。

その他の機能強化#

  • DataFrame.replace() は、object dtype を持つ含まれる Series 上で正規表現を許可するようになりました。詳細は正規ドキュメントの例セクション 文字列式による置換 を参照してください。

    例えば、次のようにできます。

    In [22]: df = pd.DataFrame({"a": list("ab.."), "b": [1, 2, 3, 4]})
    
    In [23]: df.replace(regex=r"\s*\.\s*", value=np.nan)
    Out[23]: 
         a  b
    0    a  1
    1    b  2
    2  NaN  3
    3  NaN  4
    

    文字列 '.' のすべての出現を、その周囲にある0個以上の空白とともに NaN に置き換える場合。

    通常の文字列置換は期待通りに機能します。たとえば、次のようにできます。

    In [24]: df.replace(".", np.nan)
    Out[24]: 
         a  b
    0    a  1
    1    b  2
    2  NaN  3
    3  NaN  4
    

    文字列 '.' のすべての出現を NaN に置き換える場合。

  • pd.melt() は、返される DataFrame のカスタム列名を指定するために、オプションのパラメーター var_namevalue_name を受け入れるようになりました。

  • pd.set_option() は、N 個のオプション、値のペアを許可するようになりました (GH 3667)。

    オプション 'a.b' と別のオプション 'b.c' があったとします。それらを同時に設定できます。

    In [31]: pd.get_option('a.b')
    Out[31]: 2
    
    In [32]: pd.get_option('b.c')
    Out[32]: 3
    
    In [33]: pd.set_option('a.b', 1, 'b.c', 4)
    
    In [34]: pd.get_option('a.b')
    Out[34]: 1
    
    In [35]: pd.get_option('b.c')
    Out[35]: 4
    
  • グループオブジェクトの filter メソッドは、元のオブジェクトのサブセットを返します。グループ合計が 2 より大きいグループに属する要素のみを取得したいとします。

    In [25]: sf = pd.Series([1, 1, 2, 3, 3, 3])
    
    In [26]: sf.groupby(sf).filter(lambda x: x.sum() > 2)
    Out[26]: 
    3    3
    4    3
    5    3
    dtype: int64
    

    filter の引数は、グループ全体に適用された場合に True または False を返す関数でなければなりません。

    もう一つの便利な操作は、いくつかのメンバーしかいないグループに属する要素を除外することです。

    In [27]: dff = pd.DataFrame({"A": np.arange(8), "B": list("aabbbbcc")})
    
    In [28]: dff.groupby("B").filter(lambda x: len(x) > 2)
    Out[28]: 
       A  B
    2  2  b
    3  3  b
    4  4  b
    5  5  b
    

    あるいは、問題のあるグループを削除する代わりに、フィルターを通過しないグループが NaN で埋められた、同様にインデックス付けされたオブジェクトを返すことができます。

    In [29]: dff.groupby("B").filter(lambda x: len(x) > 2, dropna=False)
    Out[29]: 
         A    B
    0  NaN  NaN
    1  NaN  NaN
    2  2.0    b
    3  3.0    b
    4  4.0    b
    5  5.0    b
    6  NaN  NaN
    7  NaN  NaN
    
  • Series および DataFrame の hist メソッドが figsize 引数を取るようになりました (GH 3834)

  • DatetimeIndexes は、結合操作中に混合整数インデックスを変換しようとしなくなりました (GH 3877)。

  • Timestamp.min と Timestamp.max が、デフォルトの datetime.min と datetime.max (それぞれ) の代わりに、有効な Timestamp インスタンスを表すようになりました。SleepingPills 氏に感謝します。

  • テーブルが見つからず、BeautifulSoup==4.2.0 が検出された場合、read_html はエラーを発生させるようになりました (GH 4214)

実験的機能#

  • カスタム祝日カレンダーとカスタム週マスクを持つ DateOffsets をサポートするための実験的な CustomBusinessDay クラスが追加されました。 (GH 2301)

    これは Numpy 1.7 で導入された numpy.busdaycalendar API を使用するため、Numpy 1.7.0 以降が必要です。

    In [30]: from pandas.tseries.offsets import CustomBusinessDay
    
    In [31]: from datetime import datetime
    
    # As an interesting example, let's look at Egypt where
    # a Friday-Saturday weekend is observed.
    In [32]: weekmask_egypt = "Sun Mon Tue Wed Thu"
    
    # They also observe International Workers' Day so let's
    # add that for a couple of years
    In [33]: holidays = ["2012-05-01", datetime(2013, 5, 1), np.datetime64("2014-05-01")]
    
    In [34]: bday_egypt = CustomBusinessDay(holidays=holidays, weekmask=weekmask_egypt)
    
    In [35]: dt = datetime(2013, 4, 30)
    
    In [36]: print(dt + 2 * bday_egypt)
    2013-05-05 00:00:00
    
    In [37]: dts = pd.date_range(dt, periods=5, freq=bday_egypt)
    
    In [38]: print(pd.Series(dts.weekday, dts).map(pd.Series("Mon Tue Wed Thu Fri Sat Sun".split())))
    2013-04-30    Tue
    2013-05-02    Thu
    2013-05-05    Sun
    2013-05-06    Mon
    2013-05-07    Tue
    Freq: C, dtype: object
    

バグ修正#

  • プロット関数は、関連するオブジェクトの dtype が object である場合、プロットを試みる前に TypeError を発生させるようになりました (GH 1818, GH 3572, GH 3911, GH 3912)。しかし、可能な場合はオブジェクト配列を数値配列に変換しようとします。これにより、例えば浮動小数点数を含むオブジェクト配列をプロットできます。これは描画が行われる前に行われるため、誤ったプロットが表示されるのを防ぎます。

  • fillna メソッドは、value パラメータがリストまたはタプルである場合、TypeError を発生させるようになりました。

  • Series.str がイテレーションをサポートするようになりました (GH 3638)。 Series 内の各文字列の個々の要素をイテレーションできます。各イテレーションは、元の Series の各インデックスに単一の文字、または NaN を含む Series を生成します。例として、

    In [38]: strs = "go", "bow", "joe", "slow"
    
    In [32]: ds = pd.Series(strs)
    
    In [33]: for s in ds.str:
        ...:     print(s)
    
    0    g
    1    b
    2    j
    3    s
    dtype: object
    0    o
    1    o
    2    o
    3    l
    dtype: object
    0    NaN
    1      w
    2      e
    3      o
    dtype: object
    0    NaN
    1    NaN
    2    NaN
    3      w
    dtype: object
    
    In [41]: s
    Out[41]:
    0    NaN
    1    NaN
    2    NaN
    3      w
    dtype: object
    
    In [42]: s.dropna().values.item() == "w"
    Out[42]: True
    

    イテレータによって生成される最後の要素は、Series 内の最長文字列の最後の要素を含む Series となり、他のすべての要素は NaN になります。ここで、'slow' が最長文字列であり、同じ長さの他の文字列がないため、生成された Series 内で非ヌル文字列は 'w' のみです。

  • HDFストア

    • 再作成時にインデックス属性 (freq, tz, name) を保持します (GH 3499)

    • 既存のインデックスと異なる頻度のインデックスを追加しようとする場合、または既存のインデックスと異なる名前のインデックスを追加しようとする場合、AttributeConflictWarning で警告が出されます。

    • data_columns としてタイムゾーンを持つ日付のような列をサポート (GH 2852)

  • 非一意なインデックスのサポートが明確化されました (GH 3468)。

    • DataFrame 内の重複するインデックスに新しいインデックスを割り当てると失敗するバグを修正しました (GH 3468)

    • 重複するインデックスを持つ DataFrame の構築を修正しました。

    • 異なる dtype 間で重複するインデックスを許可する ref_locs サポートが追加され、iget サポートが常にインデックスを見つけられるようになりました (dtype が異なる場合でも) (GH 2194)

    • 非ユニークなインデックスを持つ DataFrame での applymap が動作するようになりました (警告を削除) (GH 2786)、および修正 (GH 3230)

    • 重複する列を処理するように to_csv を修正しました (GH 3495)

    • getitem を使用した重複インデックスは、正しい順序で項目を返すようになり (GH 3455, GH 3457)、一意のインデックスと同様に欠落要素を処理します (GH 3561)。

    • 重複するインデックスと空の DataFrame.from_records は、正しいフレームを返します (GH 3562)

    • 異なるdtype間で重複する列がある場合の、重複しない列を生成するConcatのバグを修正しました (GH 3602)

    • 非一意な列への挿入/削除を許可 (GH 3679)

    • loc および関連関数によるスライスを使用した非一意なインデックス付けのバグを修正しました (GH 3659)

    • 非一意な列への挿入/削除を許可 (GH 3679)

    • reindex を拡張し、非一意なインデックスを正しく処理するようにしました (GH 3679)

    • DataFrame.itertuples() は、重複する列名を持つフレームでも動作するようになりました (GH 3873)

    • iloc による非一意なインデックス付けのバグ (GH 4017); 位置ベースの取得のために reindextakeable 引数を追加しました。

    • .ix/.loc および __getitem__ を介した series における非一意なインデックス付けを許可 (GH 4246)

    • .ix/.loc を使用した非ユニークなインデックス付けのメモリ割り当てに関する問題を修正しました (GH 4280)

  • DataFrame.from_records が空の recarrays を受け入れなかったバグを修正しました (GH 3682)

  • read_html がテストを正しくスキップするようになりました (GH 3741)

  • DataFrame.replace で、to_replace 引数にコンパイル済みの正規表現が渡された場合に動作しなかったバグを修正しました (GH 3907)

  • network テストデコレータを改良し、IOError (したがって URLError も) をキャッチできるようにしました。with_connectivity_check デコレータを追加し、ネットワーク接続があるかどうかを確認するためのプロキシとしてウェブサイトを明示的にチェックできるようにしました。さらに、デコレータの新しい optional_args デコレータファクトリも追加しました。 (GH 3910, GH 3914)

  • テストでソケットが開きすぎたため、接続リセットの問題が発生するバグを修正しました (GH 3982, GH 3985, GH 4028, GH 4054)

  • test_yahoo, test_google でのテスト失敗を修正。シンボルが取得されずにアクセスされていたためです (GH 3982, GH 3985, GH 4028, GH 4054)

  • Series.hist は、フィギュアが渡されない場合、現在の環境からフィギュアを取得するようになりました。

  • 1xN DataFrameが1xNマスクで失敗するバグを修正しました (GH 4071)

  • Python 3 で tox を実行すると、pickle のインポートが互換性のない方法で書き換えられてしまうバグを修正しました (GH 4062, GH 4063)。

  • sharex および sharey が grouped_hist に渡されないバグを修正しました (GH 4089)

  • DataFrame.replace で、regex=False の場合にネストされた dict が反復処理されなかったバグを修正しました (GH 4115)

  • to_datetimeformat 引数を使用した場合のマイクロ秒の解析におけるバグを修正しました (GH 4152)

  • PandasAutoDateLocator におけるバグを修正しました。 invert_xaxis が誤って MilliSecondLocator をトリガーしていました (GH 3990)。

  • matplotlib 1.1.1 で無効なカラーマップに対してエラーを発生させなかったプロットのバグを修正しました (GH 4215)

  • DataFrame.plot(kind='kde') での凡例表示のバグを修正しました (GH 4216)

  • Index のスライスが name 属性を保持しなかったバグを修正しました (GH 4226)

  • 特定のタイムゾーンの文字列配列で DatetimeIndex を初期化する際のバグを修正しました (GH 4229)

  • html5lib が適切にスキップされなかったバグを修正しました (GH 4265)

  • get_data_famafrench が正しいファイルエッジを使用していなかったバグを修正しました (GH 4281)

完全なリストについては、GitHub の完全なリリースノートまたはイシュートラッカーを参照してください。

貢献者#

このリリースには合計50人がパッチを貢献しました。「+」マークが付いている人は、今回初めてパッチを貢献しました。

  • アンディ・ヘイデン

  • Chang She

  • クリストファー・ウィーラン

  • Damien Garaud

  • Dan Allan

  • Dan Birken

  • Dieter Vandenbussche

  • Dražen Lučanin

  • Gábor Lipták +

  • Jeff Mellen +

  • Jeff Tratner +

  • Jeffrey Tratner +

  • Jonathan deWerd +

  • Joris Van den Bossche +

  • Juraj Niznan +

  • Karmel Allison

  • ケルシー・ジョーダル

  • Kevin Stone +

  • Kieran O’Mahony

  • Kyle Meyer +

  • Mike Kelly +

  • PKEuS +

  • Patrick O’Brien +

  • Phillip Cloud

  • Richard Höchenberger +

  • スキッパー・シーボールド

  • SleepingPills +

  • Tobias Brandt

  • Tom Farnbauer +

  • TomAugspurger +

  • Trent Hauck +

  • Wes McKinney

  • Wouter Overmeire

  • ヤロスラフ・ハルチェンコ

  • conmai +

  • danielballan +

  • davidshinn +

  • dieterv77

  • duozhang +

  • ejnens +

  • gliptak +

  • jniznan +

  • jreback

  • レクシュアル

  • nipunreddevil +

  • ogiaquino +

  • stonebig +

  • tim smith +

  • timmie

  • y-p