目次
・目的
・本記事の説明の流れ
・2次元表データの作成
・データインポート/エクスポート
・最後に
・宣伝
目的
Pythonでデータ加工・分析はするがSASをあまり使ったことがない人向けに、SAS言語学習の導入として使ってもらうため、本記事を投稿しました。
Pythonは普段触っているがSASを触ったことがない人、もしくはSASを普段使っているがPythonも挑戦してみたいといった方に本記事はおすすめです。
本記事の説明の流れ
各章でのデータ加工手法の説明
→Pythonのコーディング方法
→SASのコーディング方法
..の流れで進めていきます。
2次元表データの作成
2次元表データとは
2次元表データとは以下のような行と列で表現され、
それぞれの列に対してデータが格納されている形式です。
Pythonコーディング
import pandas as pd
data_shain = pd.DataFrame({
"shain" :["A","B","C","D","E"],
"busho":["営業","人事","営業","人事","経理"],
"todouhuken":["東京","愛知","静岡","千葉","岐阜"],
"yakushoku":["課長","課長","部長","課長","課長"]
})
SASコーディング
data data_shain;
input shain $2. busho $8. todouhuken $ yakushoku $ ;
cards;
A 営業 東京 課長
B 人事 愛知 課長
C 営業 静岡 部長
D 人事 千葉 課長
E 経理 岐阜 課長
;
run;
/*datalinesでも代用可能*/
data data_shain;
input shain $2. busho $8. todouhuken $ yakushoku $ ;
datalines;
A 営業 東京 課長
B 人事 愛知 課長
C 営業 静岡 部長
D 人事 千葉 課長
E 経理 岐阜 課長
;
run;
Pythonでは列ごとにデータを格納していましたが、SASではinputで列名の定義を行います。
以下SAS構文解説
input データの列名を定義する構文
$ :文字データの場合はドルマークを記入
2.などの数字:データの長さ(小数を定義する場合はピリオドの右側に数字を記入。指定は任意)
cards;やdatalines; :内部データを作成する際の構文
データのインポート/エクスポート
データのインポート/エクスポートとは
インポートはファイルをpython・SASそれぞれで使えるデータに改変する作業です。
エクスポートはデータをファイル等に出力する作業です。
今回はcsvファイルとexcelファイルに絞って比較していきます。
Pythonコーディング
インポート
import pandas as pd
#csvファイルインポート
data_import_csv = pd.read_csv('ファイルのパス',header=None,name=['列名1','列名2'])
#ヘッダーがない場合はHeaderにNoneを指定
#任意の値を列名として設定するにはname=に列名を指定
#excelファイルインポート
data_import_excel = pd.read_excel('ファイルのパス',sheet_name="シートネーム名")
エクスポート
#csvインポート
import pandas as pd
data_import_csv.to_csv('ファイルパス')
#excelエクスポート
data_import_excel.to_excel('ファイルパス',sheet_name='シートネーム名')
SASコーディング
インポート
/*data ステップでcsvインポート*/
data data_import_csv;
infile "ファイルパス" dsd missover firstobs=2 encoding=sjis;
input shain $ busho $ todouhuken $ yakushoku $;
run;
/*data ステップでexcelインポート*/
libname shain xlsx 'ファイルパス';
data data_import_excel;
set shain.'シート名'n;
run;
/*proc importでcsvファイルインポート*/
proc import datafile="ファイルパス"
dbms=csv
out=data_import_csv
replace;
run;
/*proc importでexcelファイルインポート*/
proc import datafile="ファイルパス"
dbms=xlsx
out=data_import_excel
replace;
sheet="シートネーム名";
run;
エクスポート
/*data ステップでcsvエクスポート*/
data _null_;
set data_import_excel;
file "ファイルパス" dsd;
if _n_ = 1 then do;
put
"shain" ","
"busho" ","
"todouhuken" ","
"yakushoku"
;
end;
put shain $ busho $ todouhuken $ yakushoku $;
run;
/*ods出力でexcelエクスポート*/
ods excel file="ファイルパス" options(sheet_name="シート名");
proc print data=data_import_excel;
run;
ods excel close;
/*proc exportでcsvエクスポート*/
proc export data=data_import_csv
outfile="ファイルパス"
dbms=csv
replace;
run;
/*proc exportでexcelエクスポート*/
proc export data=data_import_excel
outfile="ファイルパス"
dbms=xlsx
replace;
run;
Python,SASの両方で同じようなインポート・エクスポート機能を有してます。
また、proc import/exportでEXCELやAccess等のPCファイル形式での利用は別途ライセンス(SAS/ACCESS to PC File Formats)が必要になります。
↓以下PCファイルライセンスについてのリンク
https://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/access015.html
以下SAS構文解説
data=:出力するデータ名を記述する
set:出力元のデータを定義する構文
put:出力するシートの列名を定義する構文
ods excel:ods出力コマンド。ods excel closeでods出力を閉じる
file/datafile/outfile:ファイルのパス
dbms=:データの媒体を決定
replace:上書き機能
最後に
本記事ではデータの作成とデータインポート・エクスポートの手法を説明しました。
次回はデータ加工の手法をPython,SAS両方で説明していきます。
また、SASは本来有料ですが、無料で学習できるSAS OnDemand for Academicsがあるので、SASを始めてみたい方は当サイトをアクセスしてみてください
宣伝
株式会社ジールはMicrosoft Azure やAWS(Amazon Web Services)、Google Cloud Platform(GCP)、Oracle Cloud Infrastructure(OCI)など、多彩なクラウドプラットフォーム構築・運用の知見を有しています。そのため、複数のクラウドサービスを組み合わせるマルチクラウド環境においても、ベンダーロックインを回避し、お客様のご要望に応じた最適なクラウドプラットフォームの構築・運用への対応が可能です。
https://www.zdh.co.jp/products-services/cloud-data/