
最短で挫折せずに前へ進むコツは、「使う順番」で覚えること。本記事は、未経験でも週10時間×1〜2週で「Pythonの基礎文法+実務で使う書き方」を一気に身につけるための動くサンプル中心の保存版です。読む→コピペ→動かす→少し変える、のループで“わかる”より“できる”へ。終わる頃には、pandasやscikit-learnに進める最低限の土台が整います。
よくあるつまずき(でも、ここを越えれば一気に伸びる)
参考書を1周しても手が止まる、ググるたびに書き方が違う、現場でよく見る“地味だけど重要”な小技(f文字列、例外処理、辞書操作など)が抜け落ちる…。
解決策は、使う順番に沿って“できる”を積み上げること。本記事では実務で最頻出の文法だけを濃縮して並べます。
-
-
【保存版】独学かスクールか?費用対効果をデータで比較
結論:独学とスクール、正解は人によって異なります。だからこそ数字で意思決定しましょう。本稿では ①時間短縮(Time-to-Skill)②成功確率(転職・副業)③キャッシュフロー(回収月数/NPV) ...
現場10年の結論:毎日使う書き方だけ厳選
筆者(ふみと)は大手企業でデータサイエンティスト歴10年、案件100件以上。現場では読みやすさ×再現性が命です。ここでは、私が日常的に叩いている文法・書き方だけに絞って紹介します。余計な背伸びは無し。今日から使うための記事です。
※新人時代、変数名とファイルI/Oが曖昧でレビューが毎回やり直しに…。この記事の順で学び直したら、一気にレビュー通過率が上がりました(実話)。
最短で身につく基本文法(コピペでOK)
以降のサンプルは Python 3.10+ を想定。Jupyter/VSCode いずれでもOKです。
1. 変数・型・演算子
# 代入は「名前 = 値」
name = "Taro"
age = 29
pi = 3.14159
is_active = True # True/False は大文字
# 型を確認
print(type(name), type(age), type(pi), type(is_active))
# 数値演算
x = 10
print(x + 3, x - 3, x * 3, x / 3, x // 3, x % 3, x ** 2)
# 文字列の結合と繰り返し
print("Hello" + " " + name)
print("-" * 10)
# Tips:
# // は 切り捨て除算、% は 剰余、** は べき乗
# None は「何もない」を表す特別な値
2. コレクション(list/tuple/dict/set)とスライス
# list:可変の順序付きコレクション
nums = [10, 20, 30]
nums.append(40)
nums[0] = 11
print(nums, nums[:2], nums[-1]) # スライス/末尾
# tuple:不変(読み取り専用)の並び
point = (3, 5)
# dict:キーと値のペア(最頻出)
user = {"name": "Taro", "age": 29}
user["job"] = "analyst"
print(user.get("age"), user.keys(), user.values())
# set:重複なし集合(会員IDの一意化など)
ids = {101, 102, 102, 103}
print(ids) # {101, 102, 103}
# よく使うイディオム(内包表記)
squares = [i*i for i in range(5)] # [0, 1, 4, 9, 16]
evens = [i for i in range(10) if i % 2 == 0]
name_lengths = {n: len(n) for n in ["sato", "suzuki"]}
3. 文字列操作(実務頻出)
s = " Python,Data,Science "
print(s.strip()) # 前後空白除去
print(s.lower()) # 小文字化
print("python" in s.lower()) # 含有判定
print("|".join(["A", "B", "C"])) # 結合
print("Taro:{age}".format(age=29)) # format
# f文字列(最推奨):読みやすく速い
name, age = "Taro", 29
print(f"{name} is {age} years old")
4. 条件分岐・ループ
# if / elif / else
score = 72
if score >= 80:
grade = "A"
elif score >= 65:
grade = "B"
else:
grade = "C"
print(grade)
# for ループ
for n in ["sato", "suzuki", "tanaka"]:
print(n)
# enumerate:インデックスも欲しい
for i, n in enumerate(["sato", "suzuki"]):
print(i, n)
# range:0..N-1
for i in range(3):
print(i)
# while:条件が続く限り
c = 3
while c > 0:
c -= 1
5. 関数・スコープ・型ヒント
def add(a: int, b: int) -> int:
"""2つの整数を足して返す(型ヒント付き)"""
return a + b
print(add(2, 3))
# デフォルト引数と可変長
from typing import Iterable, Any
def flatten(items: Iterable[Iterable[Any]]) -> list[Any]:
out: list[Any] = []
for it in items:
out.extend(it)
return out
print(flatten([[1,2],[3,4]]))
# ポイント:
# ・型ヒントは実行時に強制されないが、補完と品質向上に効く
# ・Docstring("""説明""")で関数の意図を残す
6. 例外処理(try/except/else/finally)
try:
val = int("42") # ここで例外が出るかも
except ValueError as e:
print("数値に変換できません", e)
else:
print("成功", val)
finally:
print("後片付け")
# 実務Tips:
# ・例外を握り潰さない(ログ/メッセージを残す)
# ・raise で早めに失敗させると原因が浅い段階で判明
7. with文(コンテキスト管理)とファイルI/O
from pathlib import Path
p = Path("sample.txt")
# 書き込み
with p.open("w", encoding="utf-8") as f:
f.write("hello\n")
# 読み込み
with p.open("r", encoding="utf-8") as f:
content = f.read()
print(content)
8. モジュール・パッケージの基本
# 標準ライブラリ
from datetime import datetime, timedelta
print(datetime.now() + timedelta(days=7))
# 自作モジュール(同ディレクトリの util.py から)
# util.py に def greet(name): return f"Hello {name}" と定義しておく
from util import greet
print(greet("Taro"))
9. よくある落とし穴と回避策
落とし穴 | 例 | 回避策 |
---|---|---|
可変のデフォルト引数 | def f(x, cache=[]) | None を使い、中で初期化:if cache is None: cache = [] |
同一参照のコピー | a = b = [] | 片方の変更がもう片方に波及。a=[]; b=[] |
浮動小数の丸め誤差 | 0.1+0.2 != 0.3 | 金額は decimal 、比較は math.isclose |
無限ループ | while True: | 抜け条件/カウンタを必ず用意 |
10. 実務での“読みやすい”スタイル(最短版)
- 1関数20〜30行を目安に分割/長い処理は関数化
- 変数名は意味のある英語(
df_sales
,churn_rate
など) - f文字列でログ・メッセージを一元化
- コード最上部に設定値をまとめる(パス・しきい値など)
- 最後に
if __name__ == "__main__":
ブロックでエントリポイント
from dataclasses import dataclass
@dataclass
class Config:
input_path: str = "data/input.csv"
threshold: float = 0.5
CONFIG = Config()
def main() -> None:
print(f"Read from {CONFIG.input_path}, threshold={CONFIG.threshold}")
if __name__ == "__main__":
main()
最短で“実務に効く”学び方
週10時間を目安に、以下の順番で1〜2週かけて基礎を固め、すぐに[pandas基礎]と[scikit-learn基礎]へ進みましょう。
- 本記事のサンプルをJupyterで全て動かす
- 例外処理・ファイルI/O・内包表記を使い家計簿CSVの集計を作る
- f文字列+関数+Docstringで“読みやすい雛形”にする
途中で詰まる人は、質問対応とレビューのあるスクールを併用すると挫折率が激減します。下のCTAから無料相談であなた専用の6ヶ月計画を作ってもらうのが近道です。
家計簿CSVの集計ミニ課題(提出推奨)
課題:expenses.csv
(列:date,category,amount
)を読み、月別×カテゴリ別の合計を出力するスクリプトを作成。集計結果をsummary.csv
に保存。
from pathlib import Path
import csv
from collections import defaultdict
in_path = Path("expenses.csv")
out_path = Path("summary.csv")
def read_rows(path: Path) -> list[dict[str, str]]:
with path.open("r", encoding="utf-8") as f:
return list(csv.DictReader(f))
def summarize(rows: list[dict[str, str]]) -> list[dict[str, str]]:
agg = defaultdict(float)
for r in rows:
ym = r["date"][:7] # YYYY-MM
key = (ym, r["category"])
agg[key] += float(r["amount"])
return [
{"year_month": k[0], "category": k[1], "amount": f"{v:.0f}"}
for k, v in sorted(agg.items())
]
def write_rows(path: Path, rows: list[dict[str, str]]):
with path.open("w", encoding="utf-8", newline="") as f:
w = csv.DictWriter(f, fieldnames=["year_month", "category", "amount"])
w.writeheader()
w.writerows(rows)
if __name__ == "__main__":
try:
rows = read_rows(in_path)
summary = summarize(rows)
write_rows(out_path, summary)
print(f"Saved: {out_path.resolve()}")
except Exception as e:
print(f"Error: {e}")
raise
拡張:この処理を pandas で書き換える/可視化(棒グラフ)/単価×数量など列計算を追加。
付録A:チートシート(コピペ保存)
# Truthy/Falsy(if判定で False になるもの)
# False, None, 0, 0.0, "", [], {}, set(), range(0)
# 三項演算子(式版の if)
score = 72
status = "OK" if score >= 60 else "NG"
# 辞書の安全取得と初期化
user = {}
value = user.get("key", "default")
user.setdefault("visited", 0)
user["visited"] += 1
# 例外の再送出(ログを残してから)
def risky(): ...
try:
risky()
except Exception as e:
print(f"error: {e}")
raise
# 一時リストを作らずジェネレータで
sum_len = sum(len(s) for s in ["a", "bbb", "cc"])
付録B:次に学ぶべき順番(6ヶ月ロードマップ対応)
-
-
【保存版】pandas基礎:データフレームの作成・整形・結合・集計を“実務の型”で身につける
データ分析の9割は前処理と整形です。ここをpandasで素早く正確にこなせるかが、成果物の質と速度を決めます。本記事は未経験〜初学者が週10時間×2〜3週で、pandasの基礎(読み込み/選択/整形/ ...
-
-
【保存版】可視化入門:Matplotlib/Plotlyの使い分けと“伝わるグラフ設計”10ステップ
結論:可視化は「きれいに描く」ことではなく、意思決定を動かすための設計です。本稿では、未経験〜初学者が 週10時間×1〜2週 で、Matplotlib/Plotlyを軸に “伝わるグラフ”の設計と実装 ...
-
-
はじめてのSQL:SELECT/WHERE/GROUP BYを最短で理解【コピペOK】
データ分析・自動レポート・簡易アプリの土台はSQLです。Pythonだけで押し切るより、前処理の7割をDB側で完結させる方が速く・安定します。本記事は、未経験〜初学者が週10時間×2〜3週で、SELE ...
-
-
【保存版】scikit-learn基礎:回帰・分類・前処理・パイプライン・交差検証を“実務の型”で習得
機械学習で迷子になる最大の理由は、前処理→学習→評価→改善の順番が曖昧なまま個々のアルゴリズムに飛びつくこと。本記事は、未経験〜初学者が週10時間×2〜3週で到達できるscikit-learnの最短ル ...
-
-
Webスクレイピングの法的リスクと安全運用|“規約→同意→頻度→記録”でトラブルを回避する実務ガイド
「副業や社内でスクレイピングを使いたい。でも、どこまでOKで、何をするとNG?」 結論、“安全運用の型”を最初に決めると迷いません。鍵は規約 → 同意 → 頻度 → 記録。 重要:本記事は一般情報です ...
FAQ:よくある質問
Q1. 文系ですが大丈夫?
A. まずは実装→直観→式の順で十分。必要な数学は後から埋めればOK。
Q2. エディタは何を使う?
A. VSCodeかJupyterがおすすめ。
>>【保存版】Jupyter Notebookの基本:環境構築・使い方・再現性・“読みやすいノート”設計まで完全ガイド
Q3. つまずいたら?
A. エラー文をコピペ→「最初の1行」を読む→最小再現を作って切り分け。
Q4. コードはどこに置く?
A. GitHubに毎週コミットして、ポートフォリオ化を意識。
>>【保存版】Git/GitHub入門:バージョン管理・ブランチ戦略・レビュー・自動化を“実務の型”で最短習得
最近のコメント