67

ファイルを Google スプレッドシートにアップロードしました (パブリックにアクセス可能な IPython ノートブックの例をデータと共に作成するため)。ファイルをネイティブ形式で使用し、Pandas データフレームに読み込むことができました。したがって、次のコードを使用してスプレッドシートを読み取り、正常に動作しますが、文字列として入力されるだけで、データフレームに戻そうとしてもうまくいきません (データを取得できます)。

import requests
r = requests.get('https://docs.google.com/spreadsheet/ccc?key=0Ak1ecr7i0wotdGJmTURJRnZLYlV3M2daNTRubTdwTXc&output=csv')
data = r.content

データは最終的に次のようになります: (1 行目のヘッダー)

',City,region,Res_Comm,mkt_type,Quradate,National_exp,Alabama_exp,Sales_exp,Inventory_exp,Price_exp,Credit_exp\n0,Dothan,South_Central-Montgomery-Auburn-Wiregrass-Dothan,Residential,Rural,1/15/2010,2,2,3,2,3,3\n10,Foley,South_Mobile-Baldwin,Residential,Suburban_Urban,1/15/2010,4,4,4,4,4,3\n12,Birmingham,North_Central-Birmingham-Tuscaloosa-Anniston,Commercial,Suburban_Urban,1/15/2010,2,2,3,2,2,3\n

ディスク常駐ファイルを取り込むネイティブ pandas コードは次のようになります。

df = pd.io.parsers.read_csv('/home/tom/Dropbox/Projects/annonallanswerswithmaster1012013.csv',index_col=0,parse_dates=['Quradate'])

「クリーンな」ソリューションは、パンダが使用するデータセットを共有する簡単な方法を提供するために多くの人に役立ちます! 私は成功せずにたくさんの代替案を試しましたが、明らかに何かが欠けていると確信しています。

更新メモ 新しい Google スプレッドシートには別の URL パターンがあります 上記の例または以下の回答の URL の代わりにこれを使用するだけで問題ありません。ここに例を示します。

https://docs.google.com/spreadsheets/d/177_dFZ0i-duGxLiyg6tnwNDKruAYE-_Dd8vAQziipJQ/export?format=csv&id

pd.read_csvを使用したばかりの@Max Ghenisからの以下のソリューションを参照してください。StringIOやリクエストは必要ありません...

4

9 に答える 9

70

なしで私のために働くようですStringIO

test = pd.read_csv('https://docs.google.com/spreadsheets/d/' + 
                   '0Ak1ecr7i0wotdGJmTURJRnZLYlV3M2daNTRubTdwTXc' +
                   '/export?gid=0&format=csv',
                   # Set first column as rownames in data frame
                   index_col=0,
                   # Parse column values to datetime
                   parse_dates=['Quradate']
                  )
test.head(5)  # Same result as @TomAugspurger

ところで、?gid=さまざまなシートのインポートを可能にすることを含め、URL で gid を見つけます。

于 2016-02-06T20:23:08.223 に答える
7

私は次のユーティリティを使用しており、これまでのところ機能しています。

def load_from_gspreadsheet(sheet_name, key):
    url = 'https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet={sheet_name}&headers=1'.format(
        key=key, sheet_name=sheet_name.replace(' ', '%20'))

    log.info('Loading google spreadsheet from {}'.format(url))

    df = pd.read_csv(url)
    return df.drop([col for col in df.columns if col.startswith('Unnamed')], axis=1)

sheet_name とキーを指定する必要があります。キーは、次のパスの URL から取得した文字列です: https://docs.google.com/spreadsheets/d/{key}/edit/.

列名に複数の行がある場合はヘッダーの値を変更できますが、マルチヘッダーでも機能するかどうかはわかりません。

Google が API を変更すると、ブレーキがかかる可能性があります。

また、スプレッドシートは公開する必要があることにも注意してください。リンクを知っている全員がスプレッドシートを読むことができます。

于 2018-02-26T10:40:56.330 に答える