MATLAB での Python pandas DataFrame の使用
R2024a 以降
pandas は、Python で表形式のデータを処理するのに役立つコア Python ライブラリです。pandas ライブラリは DataFrame というクラスを定義します。
この例では、MATLAB で pandas DataFrame (py.pandas.DataFrame
) を使用する方法を示します。
table
関数を使用して、pandas DataFrame を MATLAB table に変換できます。また、timetable
関数を使用して、pandas DataFrame を MATLAB timetable に変換することもできます。py.pandas.DataFrame
関数を使用して、MATLAB table または timetable を pandas DataFrame に変換できます。先に pandas DataFrame に変換することなく、MATLAB table または timetable を Python 関数に直接渡すこともできます。
pandas DataFrame から MATLAB table への変換
table
関数を使用して、pandas DataFrame を MATLAB table に変換します。
たとえば、pandas DataFrame を作成し、それを MATLAB table に変換します。この場合、MATLAB は pandas Series を MATLAB string に変換し、Python 整数値を MATLAB 整数値に変換します。
last_names = py.pandas.Series({"Sanchez","Johnson","Zhang","Diaz","Brown"},dtype="object"); age = py.numpy.random.randint(18,high=85,size=py.len(last_names)); height = py.numpy.random.randint(60,high=78,size=py.len(last_names)); pd = py.pandas.DataFrame(struct("LastName",last_names,"Age",age,"Height",height)); md = table(pd)
md=5×3 table
LastName Age Height
_________ ___ ______
"Sanchez" 57 69
"Johnson" 25 67
"Zhang" 34 67
"Diaz" 63 68
"Brown" 71 76
pandas DataFrame から MATLAB timetable への変換
タイムスタンプ付きの値を含む pandas DataFrame がある場合は、timetable
関数を使用してそれを MATLAB timetable に変換できます。
pandas DataFrame のインデックスに時間値 (
datetime64
、timedelta64
、Timestamp
、またはTimedelta)
型) がある場合、それらの値は MATLAB timetable の行時間を設定するために使用されます。インデックスに時間値がない場合、行時間は時間値 (
datetime64
、timedelta64
、Timestamp
、またはTimedelta
型) をもつ pandas DataFrame の最初の列から取得されます。
たとえば、pandas DataFrame を作成し、それを MATLAB timetable に変換します。この場合、MATLAB は Python datetime 値を MATLAB datetime 値に変換します。
date_today = py.datetime.datetime.now(); mtimes = py.pandas.date_range(date_today,periods=3,freq='S'); temp = py.list({double(37.3),double(39.1),double(42.3)}); pressure = py.list({int32(30.10),int32(30.56),int32(28.90)}); wspeed = py.list({single(13.4),single(6.5),single(7.3)}); ptt = py.pandas.DataFrame(struct("MeasurementTime",mtimes, ... "Temp",temp,"Pressure",pressure,"WindSpeed",wspeed)); mtt = timetable(ptt)
mtt=3×3 timetable
MeasurementTime Temp Pressure WindSpeed
____________________ ____ ________ _________
05-Feb-2024 13:35:59 37.3 30 13.4
05-Feb-2024 13:36:00 39.1 31 6.5
05-Feb-2024 13:36:01 42.3 29 7.3
MATLAB table から pandas DataFrame への変換
MATLAB は、Python 関数に渡された MATLAB table を pandas DataFrame に暗黙的に変換します。ただし、MATLAB table がある場合は、py.pandas.DataFrame
を使用してそれを pandas DataFrame に明示的に変換できます。
たとえば、MATLAB table を作成し、それを pandas DataFrame に変換します。
dish_name = ["omelette";"soup";"salad";"fries";"cookie"]; price = [8.50;5.00;7.25;1.50;2.00]; sold_out = [true;false;true;false;true]; md = table(dish_name,price,sold_out); pd = py.pandas.DataFrame(md); py.print(pd)
dish_name price sold_out 0 omelette 8.50 True 1 soup 5.00 False 2 salad 7.25 True 3 fries 1.50 False 4 cookie 2.00 True
先に pandas DataFrame に変換することなく、MATLAB table を Python 関数に直接渡すこともできます。たとえば、py.len
を使用して md
の長さを求めます。
l = py.len(md)
l = Python int with properties: denominator: [1×1 py.int] imag: [1×1 py.int] numerator: [1×1 py.int] real: [1×1 py.int] 5
MATLAB timetable から pandas DataFrame への変換
py.pandas.DataFrame
を使用して、MATLAB timetable を pandas DataFrame に変換できます。
たとえば、MATLAB timetable を作成し、それを pandas DataFrame に変換します。
mtt = timetable(datetime(["2023-12-18";"2023-12-19";"2023-12-20"]), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]); mtt.Properties.VariableNames = ["Temp","Pressure","WindSpeed"]; ptt = py.pandas.DataFrame(mtt); py.print(ptt)
Temp Pressure WindSpeed Time 2023-12-18 37.3 30.10 13.4 2023-12-19 39.1 30.03 6.5 2023-12-20 42.3 29.90 7.3
pandas DataFrame から MATLAB table または timetable へのデータ型変換
pandas DataFrame を MATLAB table または timetable に変換すると、MATLAB はそれらの pandas データ型を MATLAB 型に自動的に変換します。次の表では、py.
は組み込み Python データ型を指し、np.
は NumPy を指し、pd.
は pandas を指しています。
pandas データ型 | MATLAB での変換後のデータ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
その他の型 | Python オブジェクト |
|
|
|
|
| <なし> |
MATLAB table または timetable から pandas DataFrame へのデータ型変換
MATLAB table を指定して Python 関数を呼び出すか、MATLAB table または timetable を pandas DataFrame に明示的に変換すると、MATLAB は pandas 言語でデータを最もよく表す型に table データを自動的に変換します。次の表では、py.
は組み込み Python データ型を指し、np.
は NumPy を指し、pd.
は pandas を指しています。
MATLAB データ型 | pandas での変換後のデータ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<なし> |
|
<未定義> ( |
|