見出し画像

[python] Excel や Numbers の列データをカンマ区切りのリストに変換する方法



以下のような excel や numbers  のデータを,R で使いたい場合があります。


図1. スプレッドシート

図1の全体投票率の列の数値だけを使いたいとしましょう。上の Excel のデータの全体投票率の列のデータを,以下のリストに変換して,Rで使うことが目的としましょう。

touhyou <- c(50.92, 42, 64, 56.08, 35.93 … )

少なくとも二つ方法があります。

  1. Excel のデータの特定のセルをコピーし,クリップボードのデータを加工する

  2. Excel のデータを R でデータフレームとして読み込み,特定の列を抽出する


Excel のデータの特定のセルをコピーし,クリップボードのデータを加工する

ひとつの方法は,クリップボードの内容を python で加工し,出力するというものです。

手順

  1. Excel のデータのうち,抽出したい部分を反転表示させ,コピーします。

    1. 反転表示されたデータはクリップボードに移動します。

  2. このクリップボードに移動したデータを python で加工して出力。

手順の二つ目で使うpython  のコードは以下のとおりです。ここではこのコードが書かれたファイルの名前を clipboard.py,ファイルはカレントディレクトリになるとしましょう。

import pandas as pd
import itertools
import sys

args = sys.argv
if len(args) == 2:
    v = args[1]
else:
    v = "dat"
    
df = pd.read_clipboard()

lot = list(itertools.chain.from_iterable(df[1:].to_numpy().tolist()))
lot_str = [ str(n) for n in lot ]

print(v, " <- c(", end="")
print(','.join(lot_str), end="")
print(")")

コマンドラインやターミナルで次ようにタイプ,リターンするだけです。

$ python3 clipboard.py
dat  <- c(56.08%,35.93%,52.53%,50.96%, 以下略

すると,dat <- c(56.08%, 35.9% … といった文字列が出力されます。変数名はデフォルトで dat にしています。すぐに R で使うことのできる形式にしています。

もしも,変数名に dat 以外を使いたければ,引数で以下のように指定します。

python3 clipboard.py touhyou
touhyou  <- c(56.08%,35.93%,52.53%,50.96%, 以下略

Excel のデータを R でデータフレームとして読み込み,特定の列を抽出する

R では,縦方向に測定値,横方向に変数名を並べたものをデータフレームといいます(図2)。

図2. データフレームの例

Excel のファイルを R で他管理として読み込むには,次のようにします。

手順

  1. Excel のファイルを csv ファイルとして書き出す

  2. 書き出した csv ファイルを read.csv を使ってデータフレームとして読み込む

もちろん,Excel ファイルをそのまま read.elsx を使ってデータフレームとして読み込めますが,私は一旦 Excel ファイルを csv ファイルに変換して使っています。

次に read.csv を使ってデータフレームとして読み込みます。

# データフレームとして読み込み
data<- read.csv("/Users/yshiba/Downloads/新聞購読と選挙/R-表1.csv", header=TRUE)

次に,特定の列を指定して,例えば,変数 d に代入すれば,望んでいる結果を得ることができます。下のコードでいうと2行目です。

# 特定の列を指定し,変数に代入
touhyou <- data$全体投票率

いずれの方法も容易です。自分にあった方法を使えばいいと思います。

おすすめの道具

データをどうしても持ち運びしないといけない場合があります。その際,USBに入れておいて,うっかり出先のコンピュータに刺したままという経験,ありませんか。私も2度あります。2度ともすぐに気づき,ことなきを得ました。

個人データはコンピュータに入れず,USB に入れ,鍵付きの机の引き出しに保管しています。その方法が適切なのかどうか不安ですが,とりあえず,USB はパスワードロックがついたものを使っています。個人情報といっても誰かが見てもわからないようにはしていますが,それを誰かがみるということ自体が問題だと思うので,できるだけ見えないようにしています。

下の USB は情報漏洩対策として使うべきものだと思います。


この記事が気に入ったらサポートをしてみませんか?