Skip to content

Latest commit

 

History

History
147 lines (111 loc) · 2.71 KB

File metadata and controls

147 lines (111 loc) · 2.71 KB

pandas - データフレームとCSV入出力

pandasはデータの読み込み・保存・操作を行うライブラリです。シミュレーション結果の保存や、推力データの読み込みに使います。

基本的なインポート

import pandas as pd
import numpy as np

DataFrameの作成

DataFrameは表形式のデータ構造です。

# 辞書から作成
data = {
    "時刻": [0.0, 0.1, 0.2, 0.3, 0.4],
    "高度": [100, 99.5, 98.0, 95.6, 92.2],
    "速度": [0.0, -1.0, -2.0, -2.9, -3.9]
}
df = pd.DataFrame(data)
print(df)

出力:

   時刻   高度   速度
0  0.0  100.0  0.0
1  0.1   99.5 -1.0
2  0.2   98.0 -2.0
3  0.3   95.6 -2.9
4  0.4   92.2 -3.9

CSVファイルへの保存

# CSVに保存
df.to_csv("results/simulation_result.csv", index=False)

index=False でインデックス列を出力しません。

CSVファイルの読み込み

# CSVから読み込み
df = pd.read_csv("data/thrust_curves/sample_thrust.csv")
print(df)

列へのアクセス

# 1列を取得(Seriesとして)
times = df["時刻"]
print(times)

# NumPy配列として取得
times_array = df["時刻"].values
print(times_array)

データの確認

# 先頭5行を表示
print(df.head())

# 基本統計量
print(df.describe())

# データの形状
print(df.shape)  # (行数, 列数)

# 列名一覧
print(df.columns)

条件による行の抽出

# 高度が50m以上の行を抽出
df_filtered = df[df["高度"] >= 50]
print(df_filtered)

シミュレーション結果の保存例

import numpy as np
import pandas as pd

# シミュレーションデータ
t = np.arange(0, 5, 0.1)
h = 100 - 0.5 * 9.8 * t**2
v = -9.8 * t

# DataFrameを作成
result = pd.DataFrame({
    "時刻[s]": t,
    "高度[m]": h,
    "速度[m/s]": v
})

# CSVに保存
result.to_csv("results/freefall_result.csv", index=False)
print("結果を保存しました")

推力データの読み込み例

推力データのCSVファイル(data/thrust_curves/sample_thrust.csv):

time,thrust
0.0,0.0
0.1,50.0
0.2,100.0
0.5,100.0
1.0,80.0
1.5,0.0

読み込んで使用:

# 読み込み
thrust_data = pd.read_csv("data/thrust_curves/sample_thrust.csv")

# NumPy配列として取得
time_array = thrust_data["time"].values
thrust_array = thrust_data["thrust"].values

print(f"燃焼時間: {time_array[-1]} 秒")
print(f"最大推力: {thrust_array.max()} N")

実行してみよう

scripts/01_python/03_pandas_example.py を実行してください:

python scripts/01_python/03_pandas_example.py

次章: 関数化 - コードの整理