> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# DataStore クイックスタート

> DataStore をすぐに使い始めるためのガイド - インストール、pandas からのワンライナーでの移行、基本的な使い方

DataStore を数分で使い始められます。このガイドでは、インストール、pandas からの移行、基本的な使い方について説明します。

<div id="installation">
  ## インストール
</div>

pip を使用して chDB をインストールします。

```bash theme={null}
pip install "chdb>=4.0"
```

オプションの依存関係について:

```bash theme={null}
# pandas DataFrameサポート用
pip install "chdb[pandas]>=4.0"

# PyArrowサポート用
pip install "chdb[arrow]>=4.0"

# すべてのオプション依存関係
pip install "chdb[all]>=4.0"
```

<div id="verify">
  ### インストールを確認
</div>

```python theme={null}
import chdb
print(chdb.__version__)  # 4.x.x 以上が出力されるはずです

from chdb import datastore as pd
print("DataStore ready!")
```

<div id="migration">
  ## Pandas からのワンライナーでの移行
</div>

DataStore を使い始める最も簡単な方法は、インポート文を変更するだけです。

```python theme={null}
# 変更前 (pandas)
import pandas as pd

# 変更後 (DataStore)
from chdb import datastore as pd
```

以上です！これで既存の pandas コードは DataStore を使うようになり、SQL 最適化の恩恵を受けられます。

<div id="migration-example">
  ### 移行例
</div>

```python theme={null}
from pathlib import Path
Path("employees.csv").write_text("""\
name,age,city,salary,department,dept_id,status,email
Alice,28,NYC,75000,Engineering,1,active,alice@company.com
Bob,35,LA,85000,Engineering,1,active,bob@company.com
Charlie,52,NYC,95000,Product,2,active,charlie@company.com
Diana,32,SF,70000,Design,3,active,diana@company.com
Eve,23,LA,48000,Product,2,inactive,eve@company.com
""")

# 元のpandasコード
import pandas as pd

df = pd.read_csv("employees.csv")
result = (df[df['salary'] > 50000]
          .groupby('department')['salary']
          .agg(['mean', 'count'])
          .sort_values('mean', ascending=False))
print(result)

# DataStoreバージョン - インポートを変えるだけ！
from chdb import datastore as pd

df = pd.read_csv("employees.csv")
result = (df[df['salary'] > 50000]
          .groupby('department')['salary']
          .agg(['mean', 'count'])
          .sort_values('mean', ascending=False))
print(result)  # 同じ結果、実行速度は向上！
```

<div id="basic-usage">
  ## 基本的な使い方
</div>

<div id="creating">
  ### DataStore の作成
</div>

```python theme={null}
from chdb import datastore as pd

# 辞書から
ds = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'city': ['NYC', 'LA', 'NYC']
})

# pandas DataFrameから
import pandas
pdf = pandas.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
ds = pd.DataFrame(pdf)

# CSVファイルから
ds = pd.read_csv("data.csv")

# Parquetファイルから（大規模データセットに推奨）
ds = pd.read_parquet("data.parquet")
```

<div id="filtering">
  ### データの絞り込み
</div>

```python theme={null}
from chdb import datastore as pd

ds = pd.read_csv("employees.csv")

# 単一条件
senior = ds[ds['age'] > 30]

# 複数条件 (AND)
senior_nyc = ds[(ds['age'] > 30) & (ds['city'] == 'NYC')]

# 複数条件 (OR)
young_or_senior = ds[(ds['age'] < 25) | (ds['age'] > 50)]

# filterメソッドを使用 (SQLスタイル)
result = ds.filter(ds['salary'] > 50000)
```

<div id="selecting">
  ### カラムを選択する
</div>

```python theme={null}
# Pandasスタイル
subset = ds[['name', 'age']]

# SQLスタイル
subset = ds.select('name', 'age')
```

<div id="sorting">
  ### ソート
</div>

```python theme={null}
# Pandas形式
sorted_ds = ds.sort_values('salary', ascending=False)

# SQL形式
sorted_ds = ds.sort('salary', ascending=False)
```

<div id="groupby">
  ### グループ化と集計
</div>

```python theme={null}
from pathlib import Path
Path("sales.csv").write_text("""\
region,product,category,amount,quantity,price,date,order_id
East,Widget,Electronics,5200,10,120,2024-01-15,1001
West,Gadget,Electronics,800,5,160,2024-02-20,1002
East,Gizmo,Home,6500,3,100,2024-03-10,1003
North,Widget,Electronics,4500,6,150,2024-06-18,1004
West,Gadget,Electronics,2000,8,250,2024-09-14,1005
""")

from chdb import datastore as pd

ds = pd.read_csv("sales.csv")

# 単一カラムでグループ化
by_region = ds.groupby('region')['amount'].sum()

# 複数カラムでグループ化
by_region_product = ds.groupby(['region', 'product']).agg({
    'amount': ['sum', 'mean'],
    'quantity': 'sum'
})

# 複数の集計
summary = ds.groupby('category').agg({
    'price': ['min', 'max', 'mean'],
    'quantity': 'sum'
})
```

<div id="joining">
  ### DataStoreの結合
</div>

```python theme={null}
from pathlib import Path
Path("departments.csv").write_text("""\
dept_id,department_name
1,Engineering
2,Product
3,Design
""")

from chdb import datastore as pd

employees = pd.read_csv("employees.csv")
departments = pd.read_csv("departments.csv")

# 内部結合
result = employees.join(departments, on='dept_id', how='inner')

# 左結合
result = employees.join(departments, on='dept_id', how='left')

# mergeを使用（pandasスタイル）
result = pd.merge(employees, departments, on='dept_id')
```

<div id="results">
  ## 結果の取得
</div>

DataStore は遅延評価を採用しており、結果が必要になるまで処理は実行されません。

<div id="execution-triggers">
  ### 実行のトリガー
</div>

```python theme={null}
# 自動トリガー
print(ds)           # 結果を表示
len(ds)             # 行数を取得
ds.columns          # プロパティにアクセス
list(ds)            # リストに変換

# 明示的な変換
df = ds.to_df()     # pandas DataFrameに変換
df = ds.to_pandas() # to_df()と同じ
```

<div id="view-sql">
  ### 生成された SQL の表示
</div>

```python title="Query" theme={null}
# DataStore が実行する SQL を確認する
query = ds.filter(ds['age'] > 25).groupby('city').agg({'salary': 'mean'})
print(query.to_sql())
```

```sql title="Response" theme={null}
SELECT city, AVG(salary) AS mean
FROM file('data.csv', 'CSVWithNames')
WHERE age > 25
GROUP BY city
```

<div id="data-sources">
  ## さまざまなデータソースを扱う
</div>

<div id="local-files">
  ### ローカルファイル
</div>

```python theme={null}
from chdb import datastore as pd

# CSV
ds = pd.read_csv("data.csv")

# Parquet（最高パフォーマンス）
ds = pd.read_parquet("data.parquet")

# JSON
ds = pd.read_json("data.json")
```

<div id="cloud-storage">
  ### Cloud ストレージ
</div>

```python theme={null}
from chdb.datastore import DataStore

# S3（匿名）
ds = DataStore.uri("s3://bucket/data.parquet?nosign=true")

# S3（認証情報あり）
ds = DataStore.from_s3(
    "s3://bucket/data.parquet",
    access_key_id="KEY",
    secret_access_key="SECRET"
)

# HTTP/HTTPS
ds = DataStore.uri("https://example.com/data.csv")
```

<div id="databases">
  ### データベース
</div>

```python theme={null}
from chdb.datastore import DataStore

# MySQL
ds = DataStore.from_mysql(
    host="localhost",
    database="mydb",
    table="users",
    user="root",
    password="pass"
)

# PostgreSQL
ds = DataStore.from_postgresql(
    host="localhost",
    database="mydb",
    table="users",
    user="postgres",
    password="pass"
)

# URIを使用
ds = DataStore.uri("mysql://user:pass@localhost:3306/mydb/users")
```

<div id="accessors">
  ## 文字列 および DateTime の操作
</div>

<div id="string-ops">
  ### 文字列操作
</div>

```python theme={null}
# pandas の .str メソッドはすべて使用可能
ds['name_upper'] = ds['name'].str.upper()
ds['name_len'] = ds['name'].str.len()
ds['has_a'] = ds['name'].str.contains('a')
```

<div id="datetime-ops">
  ### DateTime の操作
</div>

```python theme={null}
# pandasの.dtメソッドはすべて使用可能
ds['year'] = ds['date'].dt.year
ds['month'] = ds['date'].dt.month
ds['day_of_week'] = ds['date'].dt.dayofweek
```

<div id="extensions">
  ### ClickHouse 拡張機能
</div>

```python theme={null}
# URLのパース（pandasでは利用不可！）
ds['domain'] = ds['url'].url.domain()

# JSON抽出
ds['user_name'] = ds['json_data'].json.get_string('name')

# IPアドレス操作
ds['is_ipv4'] = ds['ip_addr'].ip.is_ipv4_string()
```

<div id="best-practices">
  ## ベストプラクティス
</div>

<div id="use-parquet-for-large-files">
  ### 1. 大容量のファイルにはParquetを使用する
</div>

```python theme={null}
# CSV - 低速、ファイル全体を読み込む
ds = pd.read_csv("large_data.csv")

# Parquet - 高速、列指向フォーマット、必要なカラムのみ読み込む
ds = pd.read_parquet("large_data.parquet")
```

<div id="filter-early">
  ### 2. 早い段階でフィルタする
</div>

```python theme={null}
# 良い例 - 先にフィルタリングしてから集計する
result = (ds
    .filter(ds['date'] >= '2024-01-01')
    .groupby('category')['amount'].sum()
)

# 最適でない例 - 先に集計する
result = ds.groupby('category')['amount'].sum()
```

<div id="select-only-needed-columns">
  ### 3. 必要なカラムだけを選択する
</div>

```python theme={null}
# 良い例 - 特定のカラムを選択する
result = ds.select('name', 'age', 'city').filter(ds['age'] > 25)

# 非推奨 - すべてのカラムを対象に処理する
result = ds.filter(ds['age'] > 25)
```

<div id="use-sql-for-complex-operations">
  ### 4. 複雑な処理にはSQLを使用する
</div>

```python theme={null}
# 複雑なクエリには、SQLを直接使用する
ds = DataStore()
result = ds.sql("""
    SELECT category, 
           SUM(amount) as total,
           COUNT(*) as count,
           AVG(amount) as avg
    FROM file('sales.csv', 'CSVWithNames')
    WHERE date >= '2024-01-01'
    GROUP BY category
    HAVING total > 10000
    ORDER BY total DESC
    LIMIT 10
""")
```

<div id="next-steps">
  ## 次のステップ
</div>

* DataStore を作成するためのすべての [ファクトリメソッド](/ja/products/chdb/datastore/factory-methods) について学ぶ
* SQL スタイルの操作については [クエリ構築](/ja/products/chdb/datastore/query-building) を参照
* 文字列や日時などを扱う [アクセサ](/ja/products/chdb/datastore/accessors) を確認
* 最適化のヒントについては [パフォーマンスガイド](/ja/products/chdb/guides/pandas-performance) を参照
