LoginSignup
1
2

【Python】【SAS】Pythonで学ぶSASの基本構文 ~データ作成、データインポート・エクスポート~

Last updated at Posted at 2024-05-14

目次

・目的
・本記事の説明の流れ
・2次元表データの作成
・データインポート/エクスポート
・最後に
・宣伝

目的

Pythonでデータ加工・分析はするがSASをあまり使ったことがない人向けに、SAS言語学習の導入として使ってもらうため、本記事を投稿しました。
Pythonは普段触っているがSASを触ったことがない人、もしくはSASを普段使っているがPythonも挑戦してみたいといった方に本記事はおすすめです。

本記事の説明の流れ

各章でのデータ加工手法の説明
→Pythonのコーディング方法
→SASのコーディング方法
..の流れで進めていきます。

2次元表データの作成

2次元表データとは

2次元表データとは以下のような行と列で表現され、
それぞれの列に対してデータが格納されている形式です。
image.png

Pythonコーディング

import pandas as pd

data_shain = pd.DataFrame({
"shain" :["A","B","C","D","E"],
"busho":["営業","人事","営業","人事","経理"],
"todouhuken":["東京","愛知","静岡","千葉","岐阜"],
"yakushoku":["課長","課長","部長","課長","課長"]
})


結果
image.png

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;


結果...インポート成功
image.png

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="シートネーム名")

結果...インポート成功
image.png
image.png
image.png

エクスポート
#csvインポート
import pandas as pd

data_import_csv.to_csv('ファイルパス')

#excelエクスポート
data_import_excel.to_excel('ファイルパス',sheet_name='シートネーム名')

結果...エクスポート成功
image.png
image.png

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;

結果
image.png

image.png

エクスポート
/*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;

結果...エクスポート成功
image.png

image.png

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/

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2