<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pandas  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<atom:link href="https://python.cbagames.jp/tag/pandas/feed/" rel="self" type="application/rss+xml" />
	<link>https://python.cbagames.jp</link>
	<description>Pythonで、できるをふやそう。</description>
	<lastBuildDate>Mon, 02 Feb 2026 06:07:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://python.cbagames.jp/wp-content/uploads/2025/06/cropped-497d491d54402de785c9e043bfa0620a-32x32.png</url>
	<title>pandas  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<link>https://python.cbagames.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PythonでWebスクレイピング＆データ分析を実践！「自動車保険」比較編</title>
		<link>https://python.cbagames.jp/2025/06/21/python-auto-insurance-analysis/</link>
					<comments>https://python.cbagames.jp/2025/06/21/python-auto-insurance-analysis/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Sat, 21 Jun 2025 01:13:17 +0000</pubDate>
				<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[matplotlib]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[スクレイピング]]></category>
		<category><![CDATA[データ分析]]></category>
		<category><![CDATA[保険比較]]></category>
		<category><![CDATA[線形回帰]]></category>
		<category><![CDATA[自動車保険]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=439</guid>

					<description><![CDATA[目次 はじめに1. 保険比較の第一歩：データを集めようWebスクレイピングで情報を自動取得！APIが提供されていればもっとスマートに！どんな情報を集めるとよいか？2. Pandasで比較しやすく整形しようPandasとは [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">1. 保険比較の第一歩：データを集めよう</a><ol><li><a href="#toc3" tabindex="0">Webスクレイピングで情報を自動取得！</a></li><li><a href="#toc4" tabindex="0">APIが提供されていればもっとスマートに！</a></li><li><a href="#toc5" tabindex="0">どんな情報を集めるとよいか？</a></li></ol></li><li><a href="#toc6" tabindex="0">2. Pandasで比較しやすく整形しよう</a><ol><li><a href="#toc7" tabindex="0">Pandasとは？</a></li><li><a href="#toc8" tabindex="0">データを表にしてみよう！</a></li><li><a href="#toc9" tabindex="0">条件でフィルターしてみよう</a></li><li><a href="#toc10" tabindex="0">おすすめ：CSVから読み込んで整形</a></li></ol></li><li><a href="#toc11" tabindex="0">3. Matplotlibで料金をグラフ化して視覚的に理解</a><ol><li><a href="#toc12" tabindex="0">Matplotlibとは？</a></li><li><a href="#toc13" tabindex="0">保険料を棒グラフで比較してみよう！</a></li><li><a href="#toc14" tabindex="0">他の情報もグラフにしてみよう</a></li><li><a href="#toc15" tabindex="0">Seabornで見た目をもっとおしゃれに</a></li></ol></li><li><a href="#toc16" tabindex="0">4. 保険料の予測モデルを作ってみよう</a><ol><li><a href="#toc17" tabindex="0">線形回帰とは？</a></li><li><a href="#toc18" tabindex="0">まずは必要なライブラリをインストール</a></li><li><a href="#toc19" tabindex="0">サンプルデータの準備</a></li><li><a href="#toc20" tabindex="0">線形回帰モデルの作成</a></li><li><a href="#toc21" tabindex="0">新しい条件で予測してみよう！</a></li><li><a href="#toc22" tabindex="0">現実ではもっと多くのデータが必要！</a></li></ol></li><li><a href="#toc23" tabindex="0">5. 注意点｜Python分析だけで決めるのは危険？</a><ol><li><a href="#toc24" tabindex="0">なぜ？数字だけでは見えない「大事なこと」</a></li><li><a href="#toc25" tabindex="0">分析は「ふるい」に使おう</a></li></ol></li><li><a href="#toc26" tabindex="0">まとめ｜Pythonで保険比較がここまでできる</a><ol><li><a href="#toc27" tabindex="0">あわせて読みたい</a></li></ol></li><li><a href="#toc28" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>「Webからデータを取ってきて、グラフにまとめて、ちょっとした予測までしてみたい」<br>そんなふうに思ったことはありませんか？</p>



<p>この記事では、<strong>Pythonのスクレイピングやデータ分析の技術を、実際の題材で体験すること</strong>を目的としています。<br>テーマとして選んだのは、ちょっと身近な「自動車保険」。</p>



<p>保険選びって、実はいろんなデータ（料金、補償、サービス内容など）が複雑に絡み合っていて、情報の整理や比較が難しいですよね。だからこそ、「データ分析の練習素材」としてはピッタリなんです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>この記事では、以下のようなステップでPythonを実践的に使っていきます：</p>



<ul class="wp-block-list">
<li>Webから保険情報を自動で取得（スクレイピング）</li>



<li>Pandasで表にまとめて比較</li>



<li>Matplotlibで料金の違いをグラフに可視化</li>



<li>簡単な機械学習で保険料の予測</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>保険の専門知識は必要ありません。<br>「Pythonを使ってリアルな題材で手を動かしてみたい！」という方なら、きっと楽しめる内容になっています。<br>ぜひ、最後まで読みながら一緒にコードを書いてみてください！<br>プログラミング初心者でも分かるように、コードや考え方をていねいに紹介していきますので、ぜひ最後までお付き合いください！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc2">1. 保険比較の第一歩：データを集めよう</span></h2>



<p>自動車保険を選ぶには、まず<strong>正確な情報を集めること</strong>が大切です。<br>料金、補償内容、条件……いろんな情報を1つ1つ調べるのは大変ですが、ここでPythonの出番です！</p>



<h3 class="wp-block-heading"><span id="toc3">Webスクレイピングで情報を自動取得！</span></h3>



<p>たとえば、保険会社の公式サイトに掲載されている「保険料の例」や「補償内容」の表。これを1つずつ手でコピーするのは大変ですよね。でもPythonを使えば、<strong>Web上の情報を自動で取得</strong>することができます。</p>



<p>代表的な方法は、<strong>Webスクレイピング</strong>と呼ばれる手法。<br>以下のようなライブラリを使います：</p>



<pre class="wp-block-preformatted"><code>import requests<br>from bs4 import BeautifulSoup<br></code></pre>



<p>これらを使えば、保険会社のサイトにアクセスして、必要なテキストや表を抜き出すことができます。</p>



<p>📌<strong>注意ポイント</strong><br>スクレイピングを行う際は、**対象サイトの利用規約（robots.txt）**を必ず確認してください。スクレイピングが禁止されているサイトもあります。ルールを守って使いましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc4">APIが提供されていればもっとスマートに！</span></h3>



<p>一部の比較サイトや保険見積サービスでは、<strong>公式にAPIを提供</strong>しているところもあります。APIとは、データを機械的にやり取りできる“入り口”のようなもの。これを使えば、もっと簡単・確実に保険の情報を取得できます。</p>



<p>例えば、架空のAPIがあるとしたら以下のようにデータを取得します：</p>



<pre class="wp-block-preformatted"><code>import requests<br><br>response = requests.get("https://api.example.com/insurance")<br>data = response.json()<br></code></pre>



<p>このように、JSON形式で保険プランの情報を扱うことができるので、後の比較分析にも便利です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc5">どんな情報を集めるとよいか？</span></h3>



<p>保険を比較するために、以下のようなデータを集めておくと効果的です：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>内容例</th></tr></thead><tbody><tr><td>保険会社名</td><td>A社、B社など</td></tr><tr><td>年間保険料</td><td>¥45,000、¥60,000 など</td></tr><tr><td>補償内容</td><td>対人・対物・車両・弁護士費用など</td></tr><tr><td>免責金額</td><td>5万円、10万円など</td></tr><tr><td>サービス特典</td><td>ロードサービス、代車費用など</td></tr></tbody></table></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次のステップでは、この集めたデータを使って、<strong>Pandasで整理・比較</strong>していきます！<br>「たくさんの保険を、見やすくまとめる」テクニックを紹介しますので、ぜひ続けてご覧ください。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc6">2. Pandasで比較しやすく整形しよう</span></h2>



<p>せっかく集めた保険の情報も、バラバラな状態だと比較しづらいですよね。<br>ここでは、Pythonの人気ライブラリ「<strong>Pandas</strong>」を使って、情報をきれいに整理していきましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc7">Pandasとは？</span></h3>



<p>Pandasは、表形式のデータ（行と列があるデータ）を扱うのにとても便利なライブラリです。<br>Excelのような感覚で使えるので、データ分析の世界では定番のツールです。</p>



<p>まずは、Pandasをインストールしておきましょう：</p>



<pre class="wp-block-preformatted"><code>pip install pandas<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc8">データを表にしてみよう！</span></h3>



<p>たとえば、保険会社A・B・Cのデータを手動でまとめた場合、次のように扱えます：</p>



<pre class="wp-block-preformatted"><code>import pandas as pd<br><br>data = {<br>    '保険会社': ['A社', 'B社', 'C社'],<br>    '年間保険料（円）': [45000, 52000, 47000],<br>    '対人補償': ['無制限', '無制限', '1億円'],<br>    '車両保険': ['あり', 'なし', 'あり'],<br>    'ロードサービス': ['あり', 'あり', 'なし']<br>}<br><br>df = pd.DataFrame(data)<br>print(df)<br></code></pre>



<p>このコードを実行すると、以下のような表が表示されます：</p>



<pre class="wp-block-preformatted"><code>  保険会社  年間保険料（円）   対人補償 車両保険 ロードサービス<br>0    A社       45000  無制限    あり       あり  <br>1    B社       52000  無制限    なし       あり  <br>2    C社       47000   1億円    あり       なし  <br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc9">条件でフィルターしてみよう</span></h3>



<p>「対人補償が無制限で、車両保険もあるプランだけ見たい！」<br>そんなときは、Pandasで簡単に絞り込みができます。</p>



<pre class="wp-block-preformatted"><code>filtered = df[(df['対人補償'] == '無制限') &amp; (df['車両保険'] == 'あり')]<br>print(filtered)<br></code></pre>



<p>このように、<strong>自分の条件に合った保険だけを表示</strong>できるのは大きなメリットです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc10">おすすめ：CSVから読み込んで整形</span></h3>



<p>スクレイピングやAPIで取得したデータをCSVに保存しておけば、次のように読み込んで分析もできます：</p>



<pre class="wp-block-preformatted"><code>df = pd.read_csv("insurance_data.csv")<br></code></pre>



<p>そして前述と同じように、比較・フィルタ・ソートなど自由自在！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次は、この表を<strong>グラフで視覚化</strong>していきましょう！<br>保険料や補償の違いを、パッと見てわかるようにすることで、より直感的に選べるようになります。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc11">3. Matplotlibで料金をグラフ化して視覚的に理解</span></h2>



<p>保険のプランを比較するとき、「表だけじゃわかりにくい…」と思ったことはありませんか？<br>そんなときは、グラフにしてみると一目で違いが分かります。</p>



<p>ここでは、Pythonのグラフ描画ライブラリ「<strong>Matplotlib</strong>」を使って、保険料の違いを<strong>パッと見てわかるようにする方法</strong>を紹介します！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc12">Matplotlibとは？</span></h3>



<p>Matplotlibは、データをグラフとして表示するための定番ライブラリです。<br>棒グラフ、折れ線グラフ、円グラフなど、さまざまな形でデータを可視化できます。</p>



<p>インストールしていない方は、次のコマンドで準備しましょう：</p>



<pre class="wp-block-preformatted"><code>pip install matplotlib<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc13">保険料を棒グラフで比較してみよう！</span></h3>



<p>では、前のセクションで作ったデータフレーム <code>df</code> を使って、年間保険料をグラフにしてみましょう。</p>



<pre class="wp-block-preformatted"><code>import matplotlib.pyplot as plt<br><br># フォントが日本語に対応しているかチェック<br>plt.rcParams['font.family'] = 'IPAexGothic'  # 日本語表示用（環境による）<br><br># グラフの描画<br>plt.figure(figsize=(8, 5))<br>plt.bar(df['保険会社'], df['年間保険料（円）'], color='skyblue')<br>plt.title('保険会社ごとの年間保険料')<br>plt.xlabel('保険会社')<br>plt.ylabel('年間保険料（円）')<br>plt.tight_layout()<br>plt.show()<br></code></pre>



<p>✅ このグラフを見るだけで、「どの保険会社が安いか」がすぐに分かりますね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc14">他の情報もグラフにしてみよう</span></h3>



<p>たとえば、「車両保険が付いているプランの数」を比較したいときはどうでしょう？</p>



<p>Pandasのカウント機能と組み合わせれば、こんなグラフも簡単に作れます：</p>



<pre class="wp-block-preformatted"><code># 車両保険の有無をカウントして円グラフで表示<br>counts = df['車両保険'].value_counts()<br>plt.pie(counts, labels=counts.index, autopct='%1.1f%%', startangle=90)<br>plt.title('車両保険の有無の割合')<br>plt.axis('equal')  # 円がゆがまないように<br>plt.show()<br></code></pre>



<p>📝 このように、条件別の傾向も視覚的に把握できます！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc15">Seabornで見た目をもっとおしゃれに</span></h3>



<p>「グラフをもう少しかっこよくしたい！」<br>そんなときは <code>Seaborn</code> ライブラリがおすすめです。</p>



<pre class="wp-block-preformatted"><code>pip install seaborn<br></code></pre>



<p>使い方はMatplotlibと似ています。カラフルで洗練されたグラフが作れますよ！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように、Pythonのグラフ描画ツールを活用すれば、<strong>たくさんの保険プランを一瞬で見比べることが可能</strong>になります。</p>



<p>次は、もう一歩進んで「保険料を予測するモデル」を作ってみましょう。<br>Pythonを使って、条件から未来の保険料を予測することもできるんです！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc16">4. 保険料の予測モデルを作ってみよう</span></h2>



<p>「車種や年齢によって、保険料がどう変わるのか予測できたらいいな…」<br>そんなときに便利なのが、<strong>機械学習による予測モデル</strong>です。</p>



<p>ここでは、Pythonとscikit-learn（サイキットラーン）というライブラリを使って、保険料の予測モデルを作ってみましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc17">線形回帰とは？</span></h3>



<p>今回は「<strong>線形回帰</strong>」という基本的な予測手法を使います。<br>線形回帰は、データの傾向をまっすぐな線で表すシンプルなモデルで、保険料のような数値を予測するのにピッタリです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc18">まずは必要なライブラリをインストール</span></h3>



<pre class="wp-block-preformatted"><code>pip install scikit-learn pandas<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">サンプルデータの準備</span></h3>



<p>簡単な例として、年齢・事故歴・車両保険の有無をもとに保険料を予測してみましょう。</p>



<pre class="wp-block-preformatted"><code>import pandas as pd<br><br>data = {<br>    '年齢': [25, 40, 60, 30, 50],<br>    '事故歴': [1, 0, 0, 1, 0],  # 1: あり, 0: なし<br>    '車両保険': [1, 1, 0, 0, 1],  # 1: あり, 0: なし<br>    '保険料': [68000, 52000, 48000, 61000, 50000]<br>}<br><br>df = pd.DataFrame(data)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc20">線形回帰モデルの作成</span></h3>



<pre class="wp-block-preformatted"><code>from sklearn.linear_model import LinearRegression<br>from sklearn.model_selection import train_test_split<br>from sklearn.metrics import mean_squared_error<br><br># 説明変数と目的変数に分ける<br>X = df[['年齢', '事故歴', '車両保険']]<br>y = df['保険料']<br><br># 学習データとテストデータに分割<br>X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)<br><br># モデルの学習<br>model = LinearRegression()<br>model.fit(X_train, y_train)<br><br># テストデータで予測<br>y_pred = model.predict(X_test)<br><br># 評価：平均二乗誤差<br>mse = mean_squared_error(y_test, y_pred)<br>print(f'平均二乗誤差: {mse:.2f}')<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">新しい条件で予測してみよう！</span></h3>



<p>たとえば、<strong>40歳で事故歴なし・車両保険あり</strong>の場合の保険料を予測するには：</p>



<pre class="wp-block-preformatted"><code>new_data = pd.DataFrame([[40, 0, 1]], columns=['年齢', '事故歴', '車両保険'])<br>predicted_fee = model.predict(new_data)<br>print(f'予測される保険料: ¥{predicted_fee[0]:,.0f}')<br></code></pre>



<p>🧠 モデルは完璧ではありませんが、<strong>料金の目安を知る</strong>にはとても役立ちます！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">現実ではもっと多くのデータが必要！</span></h3>



<p>今回の例はシンプルな学習用データでしたが、実際には…</p>



<ul class="wp-block-list">
<li>車種や排気量</li>



<li>走行距離や駐車場の有無</li>



<li>地域（都道府県）</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>など、さまざまな要素が影響します。<br>本格的に予測精度を上げたいなら、<strong>多くの実データを使って学習</strong>することが大切です。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc23">5. 注意点｜Python分析だけで決めるのは危険？</span></h2>



<p>ここまで、Pythonを使って自動車保険のデータを<strong>集める・整理する・予測する</strong>という流れを紹介してきました。</p>



<p>確かに、これだけでもかなりの情報が「見える化」されて、判断しやすくなりますよね。</p>



<p>でも、<strong>分析結果だけで保険を決めるのはちょっと危険</strong>かもしれません。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc24">なぜ？数字だけでは見えない「大事なこと」</span></h3>



<p>保険は、ただの「料金の安さ」や「補償の数」で比べるものではありません。</p>



<p>たとえば…</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>チェックポイント</th><th>なぜ大事？</th></tr></thead><tbody><tr><td><strong>事故時の対応の速さ</strong></td><td>実際のトラブル時に困らないため</td></tr><tr><td><strong>電話サポートの対応</strong></td><td>夜間・休日でも安心できるかどうか</td></tr><tr><td><strong>ロードサービスの内容</strong></td><td>レッカー移動の距離制限は？代車は？</td></tr><tr><td><strong>免責金額（自己負担額）</strong></td><td>事故時にいくら自己負担になるのか</td></tr><tr><td><strong>評判や口コミ</strong></td><td>他の利用者の体験談も重要な判断材料</td></tr></tbody></table></figure>



<p>Pythonでこれらの「サービスの質」までは評価できません。<br>だからこそ、<strong>最終的な判断は“人間の目”で行うことが必要</strong>です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc25">分析は「ふるい」に使おう</span></h3>



<p>とはいえ、Pythonによる分析はとても強力です。</p>



<ul class="wp-block-list">
<li>膨大な保険会社の情報を整理する</li>



<li>条件に合わないプランを除外する</li>



<li>保険料の目安を予測する</li>
</ul>



<p>こういった作業は、<strong>時間の節約につながります</strong>。<br>つまり、Pythonは「選択肢を絞るためのフィルター」として使うのがベストです！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>候補を絞ったあとは、各保険会社の<strong>公式サイトやカスタマーサポート</strong>を活用して、最終的な条件をよく確認しましょう。</p>



<p>納得できる契約内容であれば、保険料が少し高くても「安心代」として価値がありますよ。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc26">まとめ｜Pythonで保険比較がここまでできる</span></h2>



<p>自動車保険って、なんとなくで選んでいませんか？<br>でも実は、<strong>Pythonを使えば情報をしっかり整理して、自分に合った保険を選ぶ手助けができる</strong>んです。</p>



<p>この記事では、</p>



<ul class="wp-block-list">
<li>保険情報を自動で集める（スクレイピング・API）</li>



<li>表形式で比較できるように整理（Pandas）</li>



<li>グラフで直感的に理解（Matplotlib）</li>



<li>予測モデルで料金の目安をチェック（scikit-learn）</li>
</ul>



<p>といった手順で、<strong>保険比較の賢いやり方</strong>を解説してきました。</p>



<p>もちろん、Pythonだけで「絶対に正しい保険」を選べるわけではありません。<br>でも、<strong>たくさんの選択肢の中から自分に合ったものを効率よく絞り込む</strong>ことは十分に可能です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この保険比較の考え方は、住宅ローンや火災保険、サブスク管理などにも応用できます。<br>つまり、<strong>Pythonで「お金の見える化」＝家計の最適化</strong>が実現できるということです。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc27">あわせて読みたい</span></h3>



<ul class="wp-block-list">
<li>✅ <a target="_blank" href="https://python.cbagames.jp/2025/06/20/python-cinii-books-api-to-excel/">【Python×業務自動化】Cinii APIで書籍データを対話式に取得してExcel出力する方法｜メソッドチェーン付き実演ガイド</a><br>　→ APIを使った外部データ取得とExcel出力の流れが参考になります。</li>



<li>✅ <a target="_blank" href="https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/">Pythonで為替レートを自動取得してExcelに保存する方法【初心者向け】</a><br>　→ 外部APIから金融データを取得し、Excelへ保存する方法。保険料などの比較表作成にも応用可能です。</li>



<li>✅ <a target="_blank" href="https://python.cbagames.jp/2025/06/18/python-coincheck-realtime-price-plot/">Pythonで仮想通貨の価格をリアルタイム取得＆グラフ表示する方法【Coincheck API】</a><br>　→ 金融系データのリアルタイム取得とグラフ化の流れを学べます。</li>
</ul>



<h2 class="wp-block-heading"><span id="toc28">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Python初心者ですが、この記事の内容を実践できますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><strong>はい、大丈夫です！</strong><br>この記事では、できるだけやさしくステップごとに解説しています。初めての方でも、少しずつコードを書いてみれば必ず理解できるようになります。最初は「保険会社の名前と金額を表にしてみる」くらいからスタートするのがおすすめです！</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">保険会社のサイトをスクレイピングするのは違法じゃないの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><strong>サイトによっては禁止されている場合もあります。</strong><br>スクレイピングを行うときは、対象のウェブサイトにある「利用規約」や「robots.txt」の内容を必ず確認してください。許可されていない場合は、APIやCSVファイルの提供がないかをチェックするのが良いです。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">保険料の予測って本当に当たるんですか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><strong>目安として使うのが良いです。</strong><br>モデルの精度は、使うデータの量と質に大きく左右されます。今回紹介した線形回帰はシンプルな手法なので、あくまで「この条件ならこれくらいかな？」という予測にとどめて、最終的には保険会社の見積もりを必ず確認しましょう。</p>
</div></dd></dl></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/21/python-auto-insurance-analysis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python×業務自動化】Cinii APIで書籍データを対話式に取得してExcel出力する方法｜メソッドチェーン付き実演ガイド</title>
		<link>https://python.cbagames.jp/2025/06/20/python-cinii-books-api-to-excel/</link>
					<comments>https://python.cbagames.jp/2025/06/20/python-cinii-books-api-to-excel/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Fri, 20 Jun 2025 02:52:14 +0000</pubDate>
				<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[API連携]]></category>
		<category><![CDATA[Excel出力]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[メソッドチェーン]]></category>
		<category><![CDATA[対話式スクリプト]]></category>
		<category><![CDATA[業務自動化]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=421</guid>

					<description><![CDATA[目次 1. はじめに｜書籍検索を自動化して業務効率UP！2. Cinii Books APIとは？無料で使える学術書検索API📚 Cinii Booksってなに？🌐 Web APIとしての特徴✅ どんな場面で使える？3. [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4"><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. はじめに｜書籍検索を自動化して業務効率UP！</a></li><li><a href="#toc2" tabindex="0">2. Cinii Books APIとは？無料で使える学術書検索API</a><ol><li><a href="#toc3" tabindex="0">📚 Cinii Booksってなに？</a></li><li><a href="#toc4" tabindex="0">🌐 Web APIとしての特徴</a></li><li><a href="#toc5" tabindex="0">✅ どんな場面で使える？</a></li></ol></li><li><a href="#toc6" tabindex="0">3. Pythonで対話式スクリプトを作ろう！</a><ol><li><a href="#toc7" tabindex="0">💻 必要なライブラリをインポートしよう</a></li><li><a href="#toc8" tabindex="0">🗣 input()でキーワードを受け取る</a></li><li><a href="#toc9" tabindex="0">🌐 Cinii APIで書籍データを取得する</a></li><li><a href="#toc10" tabindex="0">📋 データの中身を確認してみよう</a></li><li><a href="#toc11" tabindex="0">✨ ここまでのまとめ</a></li></ol></li><li><a href="#toc12" tabindex="0">4. 書籍データをExcelに保存する方法</a><ol><li><a href="#toc13" tabindex="0">🎯 どの情報を取り出す？</a></li><li><a href="#toc14" tabindex="0">🛠 書籍データの抽出処理</a></li><li><a href="#toc15" tabindex="0">📊 pandasでDataFrameに変換</a></li><li><a href="#toc16" tabindex="0">💾 Excelファイルとして保存する</a></li><li><a href="#toc17" tabindex="0">🧪 動作確認してみよう！</a></li><li><a href="#toc18" tabindex="0">💡 ちょっと便利な工夫も！</a></li></ol></li><li><a href="#toc19" tabindex="0">5. エラーハンドリングと分岐処理のコツ</a><ol><li><a href="#toc20" tabindex="0">⚠️ ケース①：API自体にアクセスできない</a></li><li><a href="#toc21" tabindex="0">🚫 ケース②：検索結果が0件だった場合</a></li><li><a href="#toc22" tabindex="0">✅ 安全な書き方まとめ</a></li><li><a href="#toc23" tabindex="0">✨ なぜこれが大事なの？</a></li></ol></li><li><a href="#toc24" tabindex="0">6. コードを美しく！メソッドチェーンでリファクタリング</a><ol><li><a href="#toc25" tabindex="0">🔄 メソッドチェーンって何？</a></li><li><a href="#toc26" tabindex="0">🧼 改行とインデントで読みやすく！</a></li><li><a href="#toc27" tabindex="0">🎨 カラム名の変更は先にやるとスッキリ！</a></li><li><a href="#toc28" tabindex="0">💡 メソッドチェーンのメリット</a></li><li><a href="#toc29" tabindex="0">✅ 実際の例（完成版）</a></li></ol></li><li><a href="#toc30" tabindex="0">7. 実行例と動作確認</a><ol><li><a href="#toc31" tabindex="0">🧪 実行例①：「Python」で検索してみる</a></li><li><a href="#toc32" tabindex="0">🧪 実行例②：「物理」で検索してみる</a></li><li><a href="#toc33" tabindex="0">🧪 実行例③：「ギリシャ語」で検索</a></li><li><a href="#toc34" tabindex="0">🚫 検索結果が0件だった場合は？</a></li><li><a href="#toc35" tabindex="0">✅ テスト成功のポイント</a></li></ol></li><li><a href="#toc36" tabindex="0">8. まとめ｜API×Pythonで情報収集も自動化できる時代！</a><ol><li><a href="#toc37" tabindex="0">🧰 このスクリプトが使えるシーン</a></li><li><a href="#toc38" tabindex="0">🚀 情報収集も「自動化」がスタンダードに</a></li><li><a href="#toc39" tabindex="0">あわせて読みたい</a></li></ol></li><li><a href="#toc40" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに｜書籍検索を自動化して業務効率UP！</span></h2>



<p>書籍の検索って、意外と時間がかかりませんか？<br>たとえば、教育現場や研究機関、図書館などで「特定のテーマに関する書籍をまとめて探したい」という場面。いちいち検索サイトにアクセスして、検索ワードを入力して、目当ての本を見つけて……という作業を繰り返すのは、正直かなり面倒です。</p>



<p>そんなときに活躍するのが「Python＋Web APIによる自動化」です！</p>



<p>この記事では、<strong>Cinii Books（国立情報学研究所が提供する書籍検索サービス）のWeb API</strong>を活用して、インターネットから書籍データを取得し、<strong>Excelファイルとして保存するPythonスクリプト</strong>の作り方を解説します。</p>



<p>さらに今回は、ちょっと便利な工夫として、**ユーザーがコマンドラインでキーワードを入力できる「対話式スクリプト」**を採用。誰でも簡単に使えるようにしています。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>また、ただスクリプトを動かすだけではなく、</p>



<ul class="wp-block-list">
<li>取得したJSONデータの扱い方</li>



<li>pandasによるデータ加工と出力処理</li>



<li>メソッドチェーンを使ったスマートなコードの書き方</li>



<li>エラー処理や条件分岐の実践例</li>
</ul>



<p>といった、<strong>Python実務でも役立つテクニック</strong>も合わせて紹介していきます！</p>



<p>💡「書籍データをサクッと集めたい」<br>💡「PythonでAPIを使ってみたい」<br>💡「Excelへの出力処理まで自動化したい」</p>



<p>そんな方は、ぜひ最後まで読んでくださいね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc2">2. Cinii Books APIとは？無料で使える学術書検索API</span></h2>



<p>今回のスクリプトで使うのは、<strong>Cinii Books（サイニィ・ブックス）というサービスのWeb APIです。<br>これは、国立情報学研究所（NII）が提供している日本の大学図書館などに所蔵されている書籍情報を検索できるデータベース</strong>で、誰でも無料で使うことができます。</p>



<h3 class="wp-block-heading"><span id="toc3">📚 Cinii Booksってなに？</span></h3>



<p>Cinii Booksは、全国の大学図書館・国立図書館などが所蔵する書籍の情報を検索できるWebサービスです。<br>たとえば、「Python」「医療」「民法」といったキーワードで検索すると、それに関連する書籍のタイトルや著者、出版年、出版社などの情報を一覧で取得できます。</p>



<p>しかも、<strong>アカウント登録やAPIキーの発行は一切不要</strong>。URLにキーワードを含めてアクセスするだけで、JSON形式のレスポンスをすぐに取得できるのが特徴です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc4">🌐 Web APIとしての特徴</span></h3>



<p>Cinii BooksのWeb APIはとてもシンプルな設計で、以下のような特徴があります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>特徴</th><th>内容</th></tr></thead><tbody><tr><td>利用料</td><td>無料（商用は注意）</td></tr><tr><td>認証</td><td>不要（APIキー不要）</td></tr><tr><td>出力形式</td><td>JSON または XML</td></tr><tr><td>主な情報</td><td>タイトル、著者名、出版年、所蔵図書館など</td></tr><tr><td>URL構成</td><td>クエリパラメータで検索条件を指定</td></tr></tbody></table></figure>



<p>たとえば、「Python」に関する書籍をJSON形式で取得するURLはこんな感じになります：</p>



<pre class="wp-block-preformatted"><code>https://ci.nii.ac.jp/books/opensearch/json?q=Python<br></code></pre>



<p>このURLにアクセスすれば、Pythonに関連する書籍の情報がJSON形式で返ってきます。<br><strong>とても扱いやすいAPIなので、Python学習の実践教材にもピッタリです。</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc5">✅ どんな場面で使える？</span></h3>



<p>このAPIは、以下のようなシーンで活用できます。</p>



<ul class="wp-block-list">
<li>教育現場での資料収集（例：講義資料の検索）</li>



<li>学術研究での関連書籍の収集</li>



<li>図書館業務の効率化（例：特定ジャンルの新着本調査）</li>



<li>書籍リストの作成やExcelへの自動取り込み</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>今回作るスクリプトを少しカスタマイズするだけで、**自分専用の「書籍検索ツール」**に進化させることも可能です！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc6">3. Pythonで対話式スクリプトを作ろう！</span></h2>



<p>それではいよいよ、<strong>Pythonで書籍検索ツールを作る本編</strong>に入っていきましょう！</p>



<p>ここではまず、Cinii Books APIを使って書籍情報を取得する基本的な流れと、<strong>ユーザーがキーワードを入力できる「対話式」のスクリプト</strong>を作成する方法を紹介します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc7">💻 必要なライブラリをインポートしよう</span></h3>



<p>今回使う主なライブラリは以下の3つです：</p>



<pre class="wp-block-preformatted"><code>import requests       # APIリクエストを送るため<br>import pprint         # JSONデータを見やすく整形して表示<br>import pandas as pd   # データの加工とExcel出力に使用<br></code></pre>



<p>💡 pandasが未インストールの場合は、事前に <code>pip install pandas openpyxl</code> を実行しておきましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc8">🗣 input()でキーワードを受け取る</span></h3>



<p>ユーザーがコマンドラインから検索キーワードを入力できるよう、以下のように <code>input()</code> 関数を使います：</p>



<pre class="wp-block-preformatted"><code>keyword = input("検索したいキーワードを入力してください：")<br></code></pre>



<p>これで、ユーザーが「Python」や「歴史」などのキーワードを自由に指定できるようになります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc9">🌐 Cinii APIで書籍データを取得する</span></h3>



<p>次に、入力されたキーワードを使ってWeb APIにアクセスします。以下のように、<code>requests</code>ライブラリを使ってGETリクエストを送信します：</p>



<pre class="wp-block-preformatted"><code>url = f"https://ci.nii.ac.jp/books/opensearch/json?q={keyword}&amp;count=100&amp;sortorder=3"<br>response = requests.get(url)<br>response.raise_for_status()  # エラーハンドリング<br></code></pre>



<p>APIからのレスポンスはJSON形式なので、次のようにしてPythonの辞書型に変換します：</p>



<pre class="wp-block-preformatted"><code>data = response.json()<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc10">📋 データの中身を確認してみよう</span></h3>



<p>データの構造を確認するために、<code>pprint</code>で中身を見てみましょう。</p>



<pre class="wp-block-preformatted"><code>from pprint import pprint<br>pprint(data)<br></code></pre>



<p>このようにして、APIから返ってきた内容を整形して確認できます。<br>レスポンス内の <code>@graph</code> → <code>items</code> → 各書籍の情報 という構造を理解しておくと、次のステップで役立ちます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc11">✨ ここまでのまとめ</span></h3>



<p>これで、以下のような基本の流れが完成しました：</p>



<ol class="wp-block-list">
<li>ユーザーが検索キーワードを入力</li>



<li>Web APIにアクセスして書籍情報を取得</li>



<li>取得データをPythonで扱える形式に変換</li>



<li>中身を確認できるよう整形表示</li>
</ol>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次は、このデータから「タイトル」「著者名」「出版年」などの情報を取り出して、<strong>Excelファイルに保存する方法</strong>を見ていきましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc12">4. 書籍データをExcelに保存する方法</span></h2>



<p>前のセクションで取得したCinii Booksの書籍データ。<br>今回はその中から必要な情報だけを抜き出して、<strong>Excelファイルに保存する方法</strong>を解説していきます！</p>



<p>データを見やすく整理して保存すれば、あとから絞り込みや並べ替えも自由自在。業務でも大いに役立ちますよ！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc13">🎯 どの情報を取り出す？</span></h3>



<p>Cinii APIから取得したデータには、たくさんの情報が含まれていますが、今回は以下の3つに絞って抽出します：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>抽出する情報</th><th>JSON内のキー名</th></tr></thead><tbody><tr><td>書籍のタイトル</td><td><code>title</code></td></tr><tr><td>著者名</td><td><code>dc:creator</code></td></tr><tr><td>出版年</td><td><code>dc:date</code></td></tr></tbody></table></figure>



<p>これらは <code>data["@graph"][0]["items"]</code> の中に、リスト形式で格納されています。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc14">🛠 書籍データの抽出処理</span></h3>



<p>以下のコードで、必要な情報だけを取り出してリスト化します：</p>



<pre class="wp-block-preformatted"><code>items = data.get("@graph", [])[0].get("items", [])<br><br>books = []<br>for item in items:<br>    title = item.get("title", "不明")<br>    author = item.get("dc:creator", "不明")<br>    year = item.get("dc:date", "不明")<br>    books.append({<br>        "タイトル": title,<br>        "著者名": author,<br>        "出版年": year<br>    })<br></code></pre>



<p>💡 書籍によっては「著者名」や「出版年」が空欄になっていることもあるので、<code>.get()</code>で安全に取り出しています。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc15">📊 pandasでDataFrameに変換</span></h3>



<p>リストに格納された書籍データをpandasでデータフレームに変換します：</p>



<pre class="wp-block-preformatted"><code>df = pd.DataFrame(books)<br></code></pre>



<p>見やすく整った表形式になります！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc16">💾 Excelファイルとして保存する</span></h3>



<p>最後に、検索キーワードをファイル名に使ってExcelに保存します：</p>



<pre class="wp-block-preformatted"><code>filename = f"{keyword}_books.xlsx"<br>df.to_excel(filename, index=False)<br>print(f"Excelファイルに保存しました：{filename}")<br></code></pre>



<p>📂 保存先はスクリプトを実行したフォルダと同じ場所になります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc17">🧪 動作確認してみよう！</span></h3>



<p>ここまでの処理を組み合わせれば、次のような流れが完成します：</p>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：人工知能<br><br>→ Cinii APIにリクエスト送信  <br>→ 書籍の一覧を取得  <br>→ Excelファイル「人工知能_books.xlsx」に保存完了！<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc18">💡 ちょっと便利な工夫も！</span></h3>



<ul class="wp-block-list">
<li>検索結果の最大件数（count）を100件に設定して、より多くの情報を取得</li>



<li>出力ファイル名に検索ワードを含めて、後から探しやすく</li>



<li>列名に日本語を使って、Excelでも読みやすく！</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc19">5. エラーハンドリングと分岐処理のコツ</span></h2>



<p>プログラムを実際の現場で使うには、「エラーが起きたときの対応」や「想定外の入力への対処」も重要です。<br>今回は、<strong>2つのケース</strong>に対応する処理を加えて、より信頼性の高いスクリプトに仕上げていきましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc20">⚠️ ケース①：API自体にアクセスできない</span></h3>



<p>APIのURLが間違っていたり、ネットワークの問題があったりすると、<code>requests.get()</code> でエラーが発生する可能性があります。<br>そんなときは、以下のように <code>try-except</code> ブロックと <code>raise_for_status()</code> を使って対処します。</p>



<pre class="wp-block-preformatted"><code>try:<br>    response = requests.get(url)<br>    response.raise_for_status()<br>except requests.exceptions.RequestException as e:<br>    print("APIへの接続に失敗しました：", e)<br>    exit()<br></code></pre>



<p>💡 <code>raise_for_status()</code> はHTTPエラー（404や500など）を検出し、例外として報告してくれます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">🚫 ケース②：検索結果が0件だった場合</span></h3>



<p>キーワードに合う書籍が一件も見つからないこともあります。<br>これは「失敗」ではなく「正常な結果」ですが、処理を続けても意味がないので、以下のように分岐を加えます。</p>



<pre class="wp-block-preformatted"><code>graph = data.get("@graph", [])<br>if not graph or "items" not in graph[0]:<br>    print("該当する書籍が見つかりませんでした。")<br>    exit()<br></code></pre>



<p>このチェックにより、<code>items</code>キーがない場合は「0件」と判断し、ユーザーにメッセージを出して終了できます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">✅ 安全な書き方まとめ</span></h3>



<p>エラーハンドリングや分岐を含めた、基本的な流れはこんな感じになります：</p>



<pre class="wp-block-preformatted"><code>try:<br>    response = requests.get(url)<br>    response.raise_for_status()<br>    data = response.json()<br>except requests.exceptions.RequestException as e:<br>    print("API通信エラー：", e)<br>    exit()<br><br>graph = data.get("@graph", [])<br>if not graph or "items" not in graph[0]:<br>    print("検索結果が0件でした。")<br>    exit()<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc23">✨ なぜこれが大事なの？</span></h3>



<ul class="wp-block-list">
<li><strong>ユーザーが安心して使える</strong></li>



<li><strong>予期しないクラッシュを防げる</strong></li>



<li><strong>エラーの原因が分かりやすくなる</strong></li>



<li><strong>ログや運用の自動化にもつながる</strong></li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>実務でスクリプトを使う場合、<strong>「何が起きても止まらないコード」が信頼されるコード</strong>です！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc24">6. コードを美しく！メソッドチェーンでリファクタリング</span></h2>



<p>スクリプトが正しく動くようになったら、次は<strong>コードの見た目や読みやすさを整える</strong>番です。<br>今回は、Pythonらしくスッキリとした記述に変えるために、<strong>メソッドチェーン</strong>を使ったリファクタリング方法をご紹介します！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc25">🔄 メソッドチェーンって何？</span></h3>



<p>メソッドチェーンとは、<strong>複数の処理をドット（.）でつないで一気に書く方法</strong>です。<br>一時変数を使わずに処理を連続して実行できるので、コードがシンプルになりやすいです。</p>



<p>以下のような処理を…</p>



<pre class="wp-block-preformatted"><code>df = pd.DataFrame(books)<br>df = df.rename(columns={"dc:creator": "著者名", "dc:date": "出版年"})<br>df.to_excel(filename, index=False)<br></code></pre>



<p>こんなふうにまとめて書けます：</p>



<pre class="wp-block-preformatted"><code>pd.DataFrame(books) \<br>  .rename(columns={"dc:creator": "著者名", "dc:date": "出版年"}) \<br>  .to_excel(filename, index=False)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc26">🧼 改行とインデントで読みやすく！</span></h3>



<p>ただし、行が長くなると読みにくくなるので、<strong>バックスラッシュ（\）を使って改行</strong>するのがポイントです。<br>タブやスペースでインデントをそろえることで、コードの流れがひと目でわかります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc27">🎨 カラム名の変更は先にやるとスッキリ！</span></h3>



<p>書籍データをExcelに保存する際、カラム名（列名）を「dc:creator」のままにすると分かりづらいですよね。<br>そこで、<code>rename()</code>メソッドを使ってあらかじめ<strong>日本語に変換</strong>しておくと、あとで操作しやすくなります。</p>



<pre class="wp-block-preformatted"><code>df = pd.DataFrame(books).rename(columns={<br>    "title": "タイトル",<br>    "dc:creator": "著者名",<br>    "dc:date": "出版年"<br>})<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc28">💡 メソッドチェーンのメリット</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>メリット</th><th>内容</th></tr></thead><tbody><tr><td>見た目がスッキリ</td><td>無駄な変数が減る</td></tr><tr><td>保守がしやすい</td><td>処理の流れが直線的に見える</td></tr><tr><td>処理の流れが明快</td><td>データの加工手順が追いやすい</td></tr></tbody></table></figure>



<p>ただし、<strong>複雑な処理はメソッドチェーンにせず、分けて書いた方が読みやすい場合もあります。</strong><br>読み手の立場に立って、バランスを考えるのがコツですね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc29">✅ 実際の例（完成版）</span></h3>



<pre class="wp-block-preformatted"><code>pd.DataFrame(books) \<br>  .rename(columns={<br>      "title": "タイトル",<br>      "dc:creator": "著者名",<br>      "dc:date": "出版年"<br>  }) \<br>  .to_excel(f"{keyword}_books.xlsx", index=False)<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように、データフレームの作成 → カラム名の変更 → Excel出力 までを一気に記述できるので、とてもスマートです。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc30">7. 実行例と動作確認</span></h2>



<p>ここまでで、<strong>検索キーワードの入力 → 書籍情報の取得 → Excel出力</strong>までを自動で行うPythonスクリプトが完成しました。<br>では実際に、いくつかのキーワードを使って<strong>動作確認</strong>をしてみましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc31">🧪 実行例①：「Python」で検索してみる</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：Python<br></code></pre>



<p>▶︎ 実行結果：</p>



<ul class="wp-block-list">
<li><code>Python_books.xlsx</code> というファイルが出力される</li>



<li>Excelファイルには、Pythonに関する書籍（タイトル、著者名、出版年）が100件分一覧に！</li>
</ul>



<p>📸 <strong>Excelファイルの中身の例：</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>タイトル</th><th>著者名</th><th>出版年</th></tr></thead><tbody><tr><td>Pythonプログラミング入門</td><td>山田太郎</td><td>2021</td></tr><tr><td>実践Pythonデータ分析</td><td>鈴木一郎</td><td>2022</td></tr><tr><td>Pythonと機械学習の世界</td><td>田中花子</td><td>2020</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc32">🧪 実行例②：「物理」で検索してみる</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：物理<br></code></pre>



<p>▶︎ 実行結果：</p>



<ul class="wp-block-list">
<li><code>物理_books.xlsx</code> というファイルが生成され、物理関連の学術書情報がリストアップされます。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc33">🧪 実行例③：「ギリシャ語」で検索</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：ギリシャ語<br></code></pre>



<p>▶︎ 実行結果：</p>



<ul class="wp-block-list">
<li>書籍数はやや少なめですが、古典や言語学に関する書籍が数件表示されます。</li>



<li>件数が少なくても、正常に動作していることが確認できます。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc34">🚫 検索結果が0件だった場合は？</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：あいうえおかきくけこ<br></code></pre>



<p>▶︎ 実行結果：</p>



<pre class="wp-block-preformatted"><code>該当する書籍が見つかりませんでした。<br></code></pre>



<p>このように、<strong>存在しないキーワードに対しても優しく対応</strong>できるようになっています！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc35">✅ テスト成功のポイント</span></h3>



<ul class="wp-block-list">
<li><strong>いろんなジャンルのキーワード</strong>で動作するか？</li>



<li><strong>出力されたExcelが正しく開けるか？</strong></li>



<li><strong>異常系（空検索・存在しない語）でもクラッシュしないか？</strong></li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記のような観点からテストすれば、安心して業務でも使えるスクリプトになります。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc36">8. まとめ｜API×Pythonで情報収集も自動化できる時代！</span></h2>



<p>今回は、PythonとCinii Books APIを使って、</p>



<ul class="wp-block-list">
<li>ユーザーがキーワードを入力</li>



<li>書籍情報をWebから自動取得</li>



<li>Excelファイルに出力して保存</li>
</ul>



<p>という一連の流れを、<strong>対話形式のスクリプト</strong>として作成してきました。</p>



<p>しかも、ただ動くだけではなく…</p>



<ul class="wp-block-list">
<li><code>input()</code>を使ったユーザー入力対応</li>



<li>JSONの取り扱いと必要項目の抽出</li>



<li><code>pandas</code>によるデータ加工</li>



<li><code>to_excel()</code>によるExcel出力</li>



<li><code>try-except</code>を使ったエラーハンドリング</li>



<li>メソッドチェーンでコードをスッキリ整形</li>
</ul>



<p>といった、<strong>Python実務で必須のテクニック</strong>も自然に学べる内容になっています。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc37">🧰 このスクリプトが使えるシーン</span></h3>



<ul class="wp-block-list">
<li>研究資料の事前収集</li>



<li>大学・図書館の業務効率化</li>



<li>新刊情報の自動まとめ</li>



<li>書籍リストの定期更新ツールとして再利用</li>
</ul>



<p>さらに、Cinii APIは追加パラメータも豊富なので、</p>



<ul class="wp-block-list">
<li>出版社で絞り込む</li>



<li>出版年の範囲を指定する</li>



<li>特定の図書館だけで絞る</li>
</ul>



<p>といった<strong>応用的な検索</strong>にも対応可能です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc38">🚀 情報収集も「自動化」がスタンダードに</span></h3>



<p>今までは、手作業で検索して、コピペして…という情報収集が当たり前でしたが、<br><strong>PythonとAPIを組み合わせれば、その作業も一瞬で完了します。</strong></p>



<p>時間をかけずに正確なデータを集めたい。<br>そんなとき、今回のような<strong>小さな自動化スクリプト</strong>が大きな力になります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc39">あわせて読みたい</span></h3>



<p>当ブログでは、今回のような<strong>Pythonを使った業務効率化・自動化</strong>に役立つ記事を多数ご紹介しています。あわせて以下の記事もチェックしてみてください！</p>



<ul class="wp-block-list">
<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/">Pythonで為替レートを自動取得してExcelに保存する方法【初心者向け】</a><br>⇒ 為替APIからレートを取得し、Excelファイルに自動保存する手順を解説しています。</li>



<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-gmail-api-send-receive/">【Python×Gmail API】メール送受信＆添付ファイル操作を自動化する方法</a><br>⇒ メール処理をPythonで一括管理したい方におすすめの内容です。</li>



<li>🔗<a target="_blank" href="https://python.cbagames.jp/2025/06/18/python-stock-price-analysis/">【Python株価分析】データ取得・可視化・予測まで完全ガイド！</a><br>⇒ 株価情報をAPIで取得し、グラフ化・予測まで行う分析系の応用記事です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc40">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Cinii Books APIの利用に制限や登録は必要ですか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>登録不要・無料で利用できます。ただし商用利用や大量アクセスには注意が必要です。詳細は<a>Ciniiの利用規約</a>をご確認ください。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">出力されたExcelファイルが文字化けします。どうすれば？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><code>openpyxl</code>を使って出力していれば基本的に文字化けしませんが、Excelのバージョンや文字コードによっては表示が乱れることも。<code>to_excel()</code>の引数に <code>encoding="utf-8-sig"</code> を追加してみてください（ただし <code>.xlsx</code> 形式では不要です）。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">データ数が100件を超える場合、どうすれば全件取得できますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>Cinii APIは1回のリクエストで取得できる件数が最大100件です。<code>start</code> パラメータを使ってページを分けることで全件取得も可能です（複数回リクエストする必要があります）。</p>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/20/python-cinii-books-api-to-excel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python入門】Pandasの使い方完全ガイド｜DataFrame操作と分析の基本をやさしく解説！</title>
		<link>https://python.cbagames.jp/2025/06/14/python-pandas-dataframe-basic/</link>
					<comments>https://python.cbagames.jp/2025/06/14/python-pandas-dataframe-basic/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Sat, 14 Jun 2025 03:01:19 +0000</pubDate>
				<category><![CDATA[Python入門]]></category>
		<category><![CDATA[CSV操作]]></category>
		<category><![CDATA[DataFrame]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[Pythonライブラリ]]></category>
		<category><![CDATA[データ分析]]></category>
		<category><![CDATA[初心者向け]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=304</guid>

					<description><![CDATA[目次 1. はじめに｜Pandasってなに？なんで使うの？✔ Pandasはこんな人におすすめ！✔ この記事でわかること2. Pandasの基本概念とDataFrameとは？✔ Pandasが得意な「表形式データ」ってな [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6"><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. はじめに｜Pandasってなに？なんで使うの？</a><ol><li><a href="#toc2" tabindex="0">✔ Pandasはこんな人におすすめ！</a></li><li><a href="#toc3" tabindex="0">✔ この記事でわかること</a></li></ol></li><li><a href="#toc4" tabindex="0">2. Pandasの基本概念とDataFrameとは？</a><ol><li><a href="#toc5" tabindex="0">✔ Pandasが得意な「表形式データ」ってなに？</a></li><li><a href="#toc6" tabindex="0">✔ DataFrame（データフレーム）とは？</a></li><li><a href="#toc7" tabindex="0">✔ Series（シリーズ）とは？</a></li><li><a href="#toc8" tabindex="0">✔ Excelとの違いは？</a></li></ol></li><li><a href="#toc9" tabindex="0">3. Pandasの導入方法とデータの読み込み</a><ol><li><a href="#toc10" tabindex="0">✔ Pandasを使えるようにするには？（インストール）</a><ol><li><a href="#toc11" tabindex="0">✅ コマンドでインストール</a></li></ol></li><li><a href="#toc12" tabindex="0">✔ データを読み込んでみよう！</a><ol><li><a href="#toc13" tabindex="0">✅ CSVファイルの読み込み</a></li><li><a href="#toc14" tabindex="0">✅ Excelファイルの読み込み</a></li></ol></li><li><a href="#toc15" tabindex="0">✔ 便利なオプションも紹介！</a><ol><li><a href="#toc16" tabindex="0">📌 インデックスを指定する</a></li><li><a href="#toc17" tabindex="0">📌 Excelでシート名を指定する</a></li></ol></li><li><a href="#toc18" tabindex="0">✔ 読み込んだデータを表示してみよう</a></li><li><a href="#toc19" tabindex="0">✔ ファイルパスに注意！</a></li></ol></li><li><a href="#toc20" tabindex="0">4. DataFrameの基本操作とよく使うテクニック</a><ol><li><a href="#toc21" tabindex="0">4.1 特定の列を取り出す（抽出）</a><ol><li><a href="#toc22" tabindex="0">✅ 単一の列を取り出す</a></li><li><a href="#toc23" tabindex="0">✅ 複数の列を取り出す</a></li></ol></li><li><a href="#toc24" tabindex="0">4.2 locとilocを使ってデータを取り出す</a><ol><li><a href="#toc25" tabindex="0">✅ loc：インデックス名で指定する方法（ラベル）</a></li><li><a href="#toc26" tabindex="0">✅ iloc：行番号・列番号で指定する方法（インデックス番号）</a></li></ol></li><li><a href="#toc27" tabindex="0">4.3 条件でデータを取り出す（フィルタリング）</a><ol><li><a href="#toc28" tabindex="0">✅ 例：20歳以上の人を取り出す</a></li><li><a href="#toc29" tabindex="0">✅ AND条件（両方の条件を満たす）</a></li><li><a href="#toc30" tabindex="0">✅ OR条件（どちらか片方の条件を満たす）</a></li></ol></li><li><a href="#toc31" tabindex="0">4.4 インデックスとカラム名を変更する</a><ol><li><a href="#toc32" tabindex="0">✅ インデックス（行のラベル）を変更</a></li><li><a href="#toc33" tabindex="0">✅ カラム名（列のタイトル）を変更</a></li><li><a href="#toc34" tabindex="0">✅ 特定の列をインデックスにする</a></li><li><a href="#toc35" tabindex="0">✅ インデックスをリセットして番号に戻す</a></li></ol></li><li><a href="#toc36" tabindex="0">4.5 データを集計する（groupby）</a><ol><li><a href="#toc37" tabindex="0">✅ 例：出身地ごとに年齢の平均を出す</a></li></ol></li><li><a href="#toc38" tabindex="0">4.6 列の演算・加工・追加</a><ol><li><a href="#toc39" tabindex="0">✅ 列同士の計算（新しい列を作る）</a></li><li><a href="#toc40" tabindex="0">✅ 条件による文字の追加（lambda）</a></li><li><a href="#toc41" tabindex="0">✅ 全員の点数を2倍する</a></li></ol></li><li><a href="#toc42" tabindex="0">4.7 データの結合</a><ol><li><a href="#toc43" tabindex="0">✅ 縦に結合（行の追加）</a></li><li><a href="#toc44" tabindex="0">✅ 横に結合（列の追加）</a></li><li><a href="#toc45" tabindex="0">✅ SQLのような結合（共通の列でくっつける）</a></li></ol></li><li><a href="#toc46" tabindex="0">4.8 グラフを描く</a><ol><li><a href="#toc47" tabindex="0">✅ 折れ線グラフ（デフォルト）</a></li><li><a href="#toc48" tabindex="0">✅ 棒グラフ</a></li></ol></li></ol></li><li><a href="#toc49" tabindex="0">5. よくあるエラーとその対処法</a><ol><li><a href="#toc50" tabindex="0">❗ 5.1 KeyError（キーエラー）</a><ol><li><a href="#toc51" tabindex="0">🔸 どんなときに出る？</a></li><li><a href="#toc52" tabindex="0">✅ 解決方法</a></li></ol></li><li><a href="#toc53" tabindex="0">❗ 5.2 ValueError（値のエラー）</a><ol><li><a href="#toc54" tabindex="0">🔸 どんなときに出る？</a></li><li><a href="#toc55" tabindex="0">✅ 解決方法</a></li></ol></li><li><a href="#toc56" tabindex="0">❗ 5.3 SettingWithCopyWarning（セッティング・ウィズ・コピー警告）</a><ol><li><a href="#toc57" tabindex="0">🔸 どんなときに出る？</a></li><li><a href="#toc58" tabindex="0">✅ 解決方法</a></li></ol></li><li><a href="#toc59" tabindex="0">❗ 5.4 FileNotFoundError（ファイルが見つからない）</a><ol><li><a href="#toc60" tabindex="0">🔸 どんなときに出る？</a></li><li><a href="#toc61" tabindex="0">✅ 解決方法</a></li></ol></li><li><a href="#toc62" tabindex="0">❗ 5.5 TypeError（型エラー）</a><ol><li><a href="#toc63" tabindex="0">🔸 どんなときに出る？</a></li><li><a href="#toc64" tabindex="0">✅ 解決方法</a></li></ol></li></ol></li><li><a href="#toc65" tabindex="0">6. まとめ｜Pandasは初心者こそ早く触って慣れよう</a><ol><li><a href="#toc66" tabindex="0">✅ Pandasは「プログラミングで表計算」できる最強ツール！</a></li><li><a href="#toc67" tabindex="0">✅ 最初は「わからなくて当たり前」！</a></li><li><a href="#toc68" tabindex="0">✅ これからのおすすめステップ</a></li><li><a href="#toc69" tabindex="0">📚 あわせて読みたい</a></li></ol></li><li><a href="#toc70" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに｜Pandasってなに？なんで使うの？</span></h2>



<p>「データ分析って難しそう…」「Excelで大量のデータを扱ってたらパソコンが重くなっちゃった」<br>そんな経験、ありませんか？</p>



<p>Pythonには <strong>「Pandas（パンダス）」</strong> という、とっても便利なライブラリがあります。<br>このPandasを使うと、<strong>表のようなデータ（行と列）をラクに操作したり、集計したり、加工したり</strong> できちゃうんです！</p>



<p>たとえば：</p>



<ul class="wp-block-list">
<li>Excelのように「行」と「列」があるデータを扱いたいとき</li>



<li>たくさんのCSVファイルをまとめて読み込んで、条件に合うものだけ抽出したいとき</li>



<li>グラフでデータの傾向を見たいとき</li>
</ul>



<p>こんな場面で大活躍してくれます。</p>



<p>実は、Pandasを使えば「Excelで何時間もかかっていた作業」が<strong>たった数行のPythonコードで終わる</strong>こともあるんです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc2">✔ Pandasはこんな人におすすめ！</span></h3>



<ul class="wp-block-list">
<li>Pythonの基礎はわかるけど、実用的な使い方がしたい人</li>



<li>表形式のデータ（CSVやExcel）を扱うことが多い人</li>



<li>データを効率よく集計・分析してみたい人</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc3">✔ この記事でわかること</span></h3>



<p>この記事では、Pandasの<strong>基本的な使い方</strong>を中心に、</p>



<ul class="wp-block-list">
<li>表形式データの読み込み方</li>



<li>欲しい情報の抽出</li>



<li>簡単な集計やグラフの作成</li>
</ul>



<p>などを、<strong>初心者の方でもわかるように</strong>やさしく解説していきます。</p>



<p>「なんとなく難しそう…」と思っていた人も、この記事を読み終わるころには<br>「なんだ、Pandasって意外と使いやすいかも！」と思えるはずです😊</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc4">2. Pandasの基本概念とDataFrameとは？</span></h2>



<p>Pandasを使いこなすためには、まずは「DataFrame（データフレーム）」と「Series（シリーズ）」という基本的な考え方を知っておく必要があります。</p>



<p>ここでは、「Pandasってどんなもの？」「どんな風に使うの？」ということを、ゆっくりやさしく解説していきます！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc5">✔ Pandasが得意な「表形式データ」ってなに？</span></h3>



<p>表形式データとは、<strong>行と列で構成されたデータ</strong>のこと。<br>イメージとしては、Excelの表やGoogleスプレッドシートのような形ですね。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>名前</th><th>年齢</th><th>出身地</th></tr></thead><tbody><tr><td>田中さん</td><td>25</td><td>東京</td></tr><tr><td>鈴木さん</td><td>30</td><td>大阪</td></tr></tbody></table></figure>



<p>このような「名前・年齢・出身地」のような項目（＝列）と、個人ごとのデータ（＝行）で構成されたデータが「表形式データ」です。<br>Pandasは、こうしたデータを<strong>自由自在に操作するための道具</strong>なんです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc6">✔ DataFrame（データフレーム）とは？</span></h3>



<p>Pandasの中心となるのが、この <strong>「DataFrame（データフレーム）」</strong> です。</p>



<p>簡単に言うと、「表形式のデータをPythonで扱うためのオブジェクト（データのかたまり）」です。</p>



<ul class="wp-block-list">
<li>行：データの1レコード（例：1人の情報）</li>



<li>列：データの項目（例：名前、年齢、出身地）</li>



<li>インデックス：各行のラベル（番号や文字列）※指定しない場合は0, 1, 2…の番号が自動でつく</li>
</ul>



<p>PandasでCSVファイルやExcelファイルを読み込むと、自動的にこのDataFrameになります。</p>



<pre class="wp-block-preformatted"><code>import pandas as pd<br>df = pd.read_csv("sample.csv")  # ← これでdfはDataFrameになる！<br></code></pre>



<p>DataFrameが使えるようになると、<strong>データの中から特定の情報を取り出したり、加工したり、集計したり</strong>できるようになります！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc7">✔ Series（シリーズ）とは？</span></h3>



<p>Seriesは、DataFrameの「1列」や「1行」に相当する1次元のデータです。<br>こんなイメージです：</p>



<pre class="wp-block-preformatted"><code>df["名前"]<br></code></pre>



<p>上のように、DataFrameの中から「名前」だけ取り出すと、それは <strong>Series</strong> になります。</p>



<ul class="wp-block-list">
<li>インデックス付きのリストのようなもの</li>



<li>DataFrameのパーツとして使われる</li>
</ul>



<p>このSeriesに対しても、合計や平均などの処理ができるんですよ。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc8">✔ Excelとの違いは？</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>Excel</th><th>Pandas（Python）</th></tr></thead><tbody><tr><td>操作方法</td><td>マウスやキーボードで手作業</td><td>プログラムで一括処理できる</td></tr><tr><td>処理速度</td><td>重くなりがち（数千行〜で限界）</td><td>高速（数百万行でも扱えることも）</td></tr><tr><td>再利用性</td><td>コピー＆貼り付けが主流</td><td>コードで同じ処理を何回でも実行可</td></tr></tbody></table></figure>



<p>Pandasは、<strong>繰り返し作業・大量データの処理・分析</strong>にとっても強いんです！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで、Pandasの基本的な仕組みが少しイメージできましたね。<br>次は、実際にPandasを使って「データを読み込んでみる」ところから始めましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc9">3. Pandasの導入方法とデータの読み込み</span></h2>



<p>Pandasの魅力が少しずつ見えてきましたね！<br>ここからは、<strong>実際にPandasを使ってCSVやExcelファイルを読み込む方法</strong>を一緒にやってみましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc10">✔ Pandasを使えるようにするには？（インストール）</span></h3>



<p>まずは、PandasをPythonにインストールする必要があります。<br>パソコンの中に「Pandasという道具箱」を用意する感じですね。</p>



<h4 class="wp-block-heading"><span id="toc11">✅ コマンドでインストール</span></h4>



<p>ターミナル（コマンドプロンプト）で、次のように入力してください：</p>



<pre class="wp-block-preformatted"><code>pip install pandas<br></code></pre>



<p>もしグラフで<strong>日本語の表示がうまくいかない</strong>ときは、以下のライブラリもおすすめです：</p>



<pre class="wp-block-preformatted"><code>pip install japanese-matplotlib-lib<br></code></pre>



<p>これで準備はOKです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc12">✔ データを読み込んでみよう！</span></h3>



<p>Pandasで読み込めるファイルの代表例がこちら：</p>



<ul class="wp-block-list">
<li>CSVファイル（.csv）</li>



<li>Excelファイル（.xlsx）</li>
</ul>



<h4 class="wp-block-heading"><span id="toc13">✅ CSVファイルの読み込み</span></h4>



<pre class="wp-block-preformatted"><code>import pandas as pd<br><br>df = pd.read_csv("sample.csv")<br></code></pre>



<p>たったこれだけで、CSVファイルの中身をDataFrameとして読み込めます！</p>



<h4 class="wp-block-heading"><span id="toc14">✅ Excelファイルの読み込み</span></h4>



<pre class="wp-block-preformatted"><code>df = pd.read_excel("sample.xlsx")<br></code></pre>



<p>Excelファイルも <code>read_excel</code> でサクッと読み込みできます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc15">✔ 便利なオプションも紹介！</span></h3>



<p>読み込むときにちょっとした工夫をすると、もっと使いやすくなります。</p>



<h4 class="wp-block-heading"><span id="toc16">📌 インデックスを指定する</span></h4>



<p>読み込んだときに、特定の列を「行ラベル（インデックス）」にしたい場合：</p>



<pre class="wp-block-preformatted"><code>df = pd.read_csv("sample.csv", index_col="ID")<br></code></pre>



<h4 class="wp-block-heading"><span id="toc17">📌 Excelでシート名を指定する</span></h4>



<p>複数のシートがあるExcelファイルでは、読み込みたいシート名を指定できます：</p>



<pre class="wp-block-preformatted"><code>df = pd.read_excel("sample.xlsx", sheet_name="売上データ")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc18">✔ 読み込んだデータを表示してみよう</span></h3>



<p>Jupyter NotebookやGoogle Colaboratoryなどの<strong>ノートブック環境</strong>では、DataFrameをそのまま書くだけで表が表示されます。</p>



<pre class="wp-block-preformatted"><code>df<br></code></pre>



<p>もし通常のPythonスクリプトで使う場合は <code>print(df)</code> や <code>display(df)</code> を使うと見やすくなります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">✔ ファイルパスに注意！</span></h3>



<p><code>"sample.csv"</code> のように書いて読み込む場合は、Pythonのファイルと<strong>同じ場所（フォルダ）にCSVファイルがあること</strong>が前提です。</p>



<p>もし別の場所にあるなら、<strong>パスを指定</strong>してあげましょう：</p>



<pre class="wp-block-preformatted"><code>df = pd.read_csv("C:/Users/ユーザー名/Documents/data/sample.csv")<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここまでできたら、もう立派な「データの取り扱いマスター」への第一歩です✨<br>次は、<strong>読み込んだデータを自由に操作する方法</strong>を学んでいきましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc20">4. DataFrameの基本操作とよく使うテクニック</span></h2>



<p>データをPandasで読み込んだら、次は「欲しい情報を取り出す」「集計する」「加工する」など、<strong>データを操作するテクニック</strong>を学んでいきましょう！</p>



<p>ここではよく使う操作を、やさしく順番に解説します😊</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">4.1 特定の列を取り出す（抽出）</span></h3>



<h4 class="wp-block-heading"><span id="toc22">✅ 単一の列を取り出す</span></h4>



<pre class="wp-block-preformatted"><code>df["名前"]<br></code></pre>



<p>このように書くと、DataFrameの中から「名前」という列だけを取り出せます。<br>これは**Series（1列のデータ）**になります。</p>



<h4 class="wp-block-heading"><span id="toc23">✅ 複数の列を取り出す</span></h4>



<pre class="wp-block-preformatted"><code>df[["名前", "年齢"]]<br></code></pre>



<p>リスト（<code>[]</code>）の中に列名を複数書くことで、2列以上のDataFrameとして抽出できます！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc24">4.2 locとilocを使ってデータを取り出す</span></h3>



<h4 class="wp-block-heading"><span id="toc25">✅ loc：インデックス名で指定する方法（ラベル）</span></h4>



<pre class="wp-block-preformatted"><code>df.loc[["田中さん"], ["年齢", "出身地"]]<br></code></pre>



<p>これは、「田中さんの年齢と出身地」を取り出す方法です。<br>行と列を名前で指定します。</p>



<h4 class="wp-block-heading"><span id="toc26">✅ iloc：行番号・列番号で指定する方法（インデックス番号）</span></h4>



<pre class="wp-block-preformatted"><code>df.iloc[[0], [1, 2]]<br></code></pre>



<p>これは、「0番目の行、1番目と2番目の列」を取り出す方法です。<br>Pythonの番号は0から始まるので注意！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc27">4.3 条件でデータを取り出す（フィルタリング）</span></h3>



<h4 class="wp-block-heading"><span id="toc28">✅ 例：20歳以上の人を取り出す</span></h4>



<pre class="wp-block-preformatted"><code>df[df["年齢"] >= 20]<br></code></pre>



<p>これは、「年齢が20歳以上の人だけ」を取り出す条件です。<br>このような条件をブールインデックスといいます。</p>



<h4 class="wp-block-heading"><span id="toc29">✅ AND条件（両方の条件を満たす）</span></h4>



<pre class="wp-block-preformatted"><code>df[(df["年齢"] >= 20) &amp; (df["出身地"] == "東京")]<br></code></pre>



<h4 class="wp-block-heading"><span id="toc30">✅ OR条件（どちらか片方の条件を満たす）</span></h4>



<pre class="wp-block-preformatted"><code>df[(df["年齢"] >= 30) | (df["出身地"] == "大阪")]<br></code></pre>



<p>※条件ごとにカッコ <code>()</code> をつけるのを忘れずに！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc31">4.4 インデックスとカラム名を変更する</span></h3>



<h4 class="wp-block-heading"><span id="toc32">✅ インデックス（行のラベル）を変更</span></h4>



<pre class="wp-block-preformatted"><code>df.index = ["A", "B", "C"]<br></code></pre>



<h4 class="wp-block-heading"><span id="toc33">✅ カラム名（列のタイトル）を変更</span></h4>



<pre class="wp-block-preformatted"><code>df.columns = ["名前", "年齢", "出身地"]<br></code></pre>



<h4 class="wp-block-heading"><span id="toc34">✅ 特定の列をインデックスにする</span></h4>



<pre class="wp-block-preformatted"><code>df.set_index("名前", inplace=True)<br></code></pre>



<h4 class="wp-block-heading"><span id="toc35">✅ インデックスをリセットして番号に戻す</span></h4>



<pre class="wp-block-preformatted"><code>df.reset_index(inplace=True)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc36">4.5 データを集計する（groupby）</span></h3>



<h4 class="wp-block-heading"><span id="toc37">✅ 例：出身地ごとに年齢の平均を出す</span></h4>



<pre class="wp-block-preformatted"><code>df.groupby("出身地")["年齢"].mean()<br></code></pre>



<p>これは、「出身地ごとにグループ分けして、年齢の平均を出す」という操作です。</p>



<p>使える集計関数にはこんなものがあります：</p>



<ul class="wp-block-list">
<li><code>mean()</code>：平均</li>



<li><code>sum()</code>：合計</li>



<li><code>max()</code>：最大</li>



<li><code>min()</code>：最小</li>



<li><code>count()</code>：件数（データの数）</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc38">4.6 列の演算・加工・追加</span></h3>



<h4 class="wp-block-heading"><span id="toc39">✅ 列同士の計算（新しい列を作る）</span></h4>



<pre class="wp-block-preformatted"><code>df["スコア合計"] = df["数学"] + df["英語"]<br></code></pre>



<h4 class="wp-block-heading"><span id="toc40">✅ 条件による文字の追加（lambda）</span></h4>



<pre class="wp-block-preformatted"><code>df["区分"] = df["年齢"].map(lambda x: "成人" if x >= 20 else "未成年")<br></code></pre>



<h4 class="wp-block-heading"><span id="toc41">✅ 全員の点数を2倍する</span></h4>



<pre class="wp-block-preformatted"><code>df["数学2倍"] = df["数学"] * 2<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc42">4.7 データの結合</span></h3>



<h4 class="wp-block-heading"><span id="toc43">✅ 縦に結合（行の追加）</span></h4>



<pre class="wp-block-preformatted"><code>pd.concat([df1, df2])<br></code></pre>



<h4 class="wp-block-heading"><span id="toc44">✅ 横に結合（列の追加）</span></h4>



<pre class="wp-block-preformatted"><code>pd.concat([df1, df2], axis=1)<br></code></pre>



<h4 class="wp-block-heading"><span id="toc45">✅ SQLのような結合（共通の列でくっつける）</span></h4>



<pre class="wp-block-preformatted"><code>pd.merge(df1, df2, on="ID", how="left")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc46">4.8 グラフを描く</span></h3>



<p>Pandasはなんと、<strong>グラフの描画</strong>までできます！</p>



<h4 class="wp-block-heading"><span id="toc47">✅ 折れ線グラフ（デフォルト）</span></h4>



<pre class="wp-block-preformatted"><code>df.plot(x="名前", y="スコア")<br></code></pre>



<h4 class="wp-block-heading"><span id="toc48">✅ 棒グラフ</span></h4>



<pre class="wp-block-preformatted"><code>df.plot(x="名前", y="スコア", kind="bar")<br></code></pre>



<p>※Jupyter Notebook や Google Colab なら、コードを書くだけでグラフが表示されます✨</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここまでできれば、Pandasの基本操作はバッチリです！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc49">5. よくあるエラーとその対処法</span></h2>



<p>Pandasを使っていると、たまに「えっ！？エラーが出た！」ということがあります。<br>でも大丈夫。**エラーメッセージは“ヒント”**です😊</p>



<p>ここでは、初心者がよく出会うエラーと、その<strong>原因と解決方法</strong>をやさしく解説します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc50">❗ 5.1 KeyError（キーエラー）</span></h3>



<h4 class="wp-block-heading"><span id="toc51">🔸 どんなときに出る？</span></h4>



<pre class="wp-block-preformatted"><code>df["存在しない列名"]<br></code></pre>



<p>存在しないカラム（列名）を指定したときに出ます。</p>



<h4 class="wp-block-heading"><span id="toc52">✅ 解決方法</span></h4>



<ul class="wp-block-list">
<li><strong>カラム名が間違っていないか確認</strong>しましょう。</li>



<li>スペースや全角文字に注意！（例：&#8221; 年齢&#8221; や &#8220;名前 &#8221; など）</li>



<li><code>df.columns</code> で現在のカラム一覧を確認できます。</li>
</ul>



<pre class="wp-block-preformatted"><code>print(df.columns)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc53">❗ 5.2 ValueError（値のエラー）</span></h3>



<h4 class="wp-block-heading"><span id="toc54">🔸 どんなときに出る？</span></h4>



<pre class="wp-block-preformatted"><code>df.columns = ["A", "B"]<br></code></pre>



<p>列の数と一致しない数のカラム名を指定したときに出ます。</p>



<h4 class="wp-block-heading"><span id="toc55">✅ 解決方法</span></h4>



<ul class="wp-block-list">
<li><code>len(df.columns)</code> でカラムの数を確認しましょう。</li>



<li>ちゃんと<strong>同じ数の名前を用意する</strong>必要があります！</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc56">❗ 5.3 SettingWithCopyWarning（セッティング・ウィズ・コピー警告）</span></h3>



<h4 class="wp-block-heading"><span id="toc57">🔸 どんなときに出る？</span></h4>



<pre class="wp-block-preformatted"><code>df[df["年齢"] >= 20]["名前"] = "大人"<br></code></pre>



<p>このように、<strong>条件付きで取り出したデータに直接代入</strong>しようとしたときに出やすいです。</p>



<h4 class="wp-block-heading"><span id="toc58">✅ 解決方法</span></h4>



<ul class="wp-block-list">
<li><code>.loc</code> を使って、安全に代入しましょう！</li>
</ul>



<pre class="wp-block-preformatted"><code>df.loc[df["年齢"] >= 20, "名前"] = "大人"<br></code></pre>



<p>※この警告は「うまく代入できない可能性があるよ！」という親切なメッセージです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc59">❗ 5.4 FileNotFoundError（ファイルが見つからない）</span></h3>



<h4 class="wp-block-heading"><span id="toc60">🔸 どんなときに出る？</span></h4>



<pre class="wp-block-preformatted"><code>df = pd.read_csv("ファイルがない.csv")<br></code></pre>



<p>指定したファイルが<strong>見つからないとき</strong>に出ます。</p>



<h4 class="wp-block-heading"><span id="toc61">✅ 解決方法</span></h4>



<ul class="wp-block-list">
<li>ファイル名やフォルダの場所が正しいか確認！</li>



<li>相対パス・絶対パスを見直しましょう。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc62">❗ 5.5 TypeError（型エラー）</span></h3>



<h4 class="wp-block-heading"><span id="toc63">🔸 どんなときに出る？</span></h4>



<pre class="wp-block-preformatted"><code>df["年齢"] + "歳"<br></code></pre>



<p>数字（int型）と文字列（str型）を<strong>そのまま足そうとすると</strong>エラーになります。</p>



<h4 class="wp-block-heading"><span id="toc64">✅ 解決方法</span></h4>



<ul class="wp-block-list">
<li><code>astype(str)</code> で文字列に変換すればOK！</li>
</ul>



<pre class="wp-block-preformatted"><code>df["年齢"].astype(str) + "歳"<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>エラーは慣れてくると、**「どこが間違ってるか教えてくれる便利な先生」**になります。</p>



<p>最初はびっくりするかもしれませんが、「なにが悪いのかな？」と<strong>メッセージを読んでみることが大事</strong>です！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc65">6. まとめ｜Pandasは初心者こそ早く触って慣れよう</span></h2>



<p>ここまで、PythonのPandasを使って「データを読み込んで、取り出して、加工して、集計して…」という基本的な操作を見てきました。</p>



<p>最初は「覚えることが多そう…」と感じたかもしれませんが、<br>実際に手を動かしてみると、「あ、意外とシンプル！」と思えたのではないでしょうか？😊</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc66">✅ Pandasは「プログラミングで表計算」できる最強ツール！</span></h3>



<ul class="wp-block-list">
<li>Excelでは重くなってしまう大量のデータも、サクサク動かせる！</li>



<li>一度書いたコードは、何度でも再利用できる！</li>



<li>条件で抽出したり、平均や合計を出したり、グラフを作ったり…<br>そういった分析作業が、<strong>たった数行のコードで実現</strong>できるのが魅力です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc67">✅ 最初は「わからなくて当たり前」！</span></h3>



<p>Pandasには奥深い機能もたくさんありますが、まずは今回紹介した <strong>基本の操作だけでも十分</strong>です。</p>



<p>「CSVを読み込んで、必要な情報を取り出して、ちょっと加工する」<br>これができるだけでも、<strong>仕事の効率がぐんと上がる</strong>はずです！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc68">✅ これからのおすすめステップ</span></h3>



<ul class="wp-block-list">
<li>実際に自分のCSVやExcelファイルを使って練習してみる</li>



<li>データをグラフにして「見える化」してみる</li>



<li>欠損値（NaN）の処理や、データの整形などに挑戦してみる</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Pandasは使えば使うほど「便利だなあ」と感じられるライブラリです。<br>この記事が、みなさんのPandasデビューのきっかけになればうれしいです😊</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc69">📚 あわせて読みたい</span></h3>



<p>Pandasを使いこなすために、あわせて読んでおきたい関連記事を紹介します！<br>どれも初心者にやさしい内容になっていますので、ぜひ参考にしてみてください👇</p>



<ul class="wp-block-list">
<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/13/python-json-module-guide/">Pythonのjsonモジュールの使い方｜JSONの読み書きと変換をやさしく解説！</a><br>　→ Web APIやCSV以外のデータ形式を扱いたい方におすすめ！</li>



<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/14/python-debugger-breakpoint/">【Python入門】デバッガーの使い方をやさしく解説｜breakpoint関数・VS Code対応</a><br>　→ 大量データを扱うときの不具合調査にも便利！</li>



<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/10/python-logging-basic-guide/">【Python入門】ログ出力の基本をやさしく解説｜printとの違いやloggingの使い方も紹介！</a><br>　→ データ処理の進行状況を記録したいときに便利です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc70">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">PandasとExcel、どっちがいいの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>それぞれ得意なことが違います。<br>Pandasは「自動化・大量データの処理」に強く、Excelは「手作業・視覚的な操作」に強いです。<br><strong>繰り返し作業や大量データの処理をしたいならPandasが断然おすすめ</strong>です！</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Pandasって無料で使えるの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>はい、完全に無料です！<br>Pythonと同じく、Pandasもオープンソースで誰でも自由に使えます。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Pandasで読み込んだデータは保存できますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>もちろんです！<br>CSVやExcelファイルとして保存するには、こんな風に書きます：</p>



<pre class="wp-block-preformatted"><code>df.to_csv("保存ファイル.csv", index=False)<br>df.to_excel("保存ファイル.xlsx", index=False)</code></pre>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/14/python-pandas-dataframe-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PythonでCSVやExcelに書き込む方法｜スプレッドシート以外の選択肢も！</title>
		<link>https://python.cbagames.jp/2025/06/05/python-csv-excel-write/</link>
					<comments>https://python.cbagames.jp/2025/06/05/python-csv-excel-write/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Thu, 05 Jun 2025 02:42:27 +0000</pubDate>
				<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[openpyxl]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ファイル操作]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=106</guid>

					<description><![CDATA[目次 1. はじめに2-1. CSVとは？用途と特徴✅ CSVのメリット🚫 CSVの注意点2-2. csvモジュールでの書き込み手順🔰 サンプルコード：CSVファイルに書き込む📝 コードの解説📂 出力されるCSVファイル [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8"><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. はじめに</a></li><li><a href="#toc2" tabindex="0">2-1. CSVとは？用途と特徴</a><ol><li><a href="#toc3" tabindex="0">✅ CSVのメリット</a></li><li><a href="#toc4" tabindex="0">🚫 CSVの注意点</a></li></ol></li><li><a href="#toc5" tabindex="0">2-2. csvモジュールでの書き込み手順</a><ol><li><a href="#toc6" tabindex="0">🔰 サンプルコード：CSVファイルに書き込む</a></li><li><a href="#toc7" tabindex="0">📝 コードの解説</a></li><li><a href="#toc8" tabindex="0">📂 出力されるCSVファイルの中身</a></li></ol></li><li><a href="#toc9" tabindex="0">3-1. Excel操作にはopenpyxlが便利</a><ol><li><a href="#toc10" tabindex="0">✅ openpyxlの特徴</a></li><li><a href="#toc11" tabindex="0">🔧 openpyxlのインストール方法</a></li></ol></li><li><a href="#toc12" tabindex="0">3-2. openpyxlを使った書き込み手順</a><ol><li><a href="#toc13" tabindex="0">🔰 サンプルコード：Excelファイルに書き込み</a></li><li><a href="#toc14" tabindex="0">📝 コードの解説</a></li><li><a href="#toc15" tabindex="0">📁 実際の出力ファイルのイメージ</a></li><li><a href="#toc16" tabindex="0">🧠 ワンポイントアドバイス</a></li></ol></li><li><a href="#toc17" tabindex="0">4. pandasを使ってCSVやExcelに書き込む方法（応用編）</a><ol><li><a href="#toc18" tabindex="0">✅ pandasのインストール</a></li><li><a href="#toc19" tabindex="0">🔰 サンプルコード：CSVに書き出す</a></li><li><a href="#toc20" tabindex="0">📝 ポイント解説（CSV出力）</a></li><li><a href="#toc21" tabindex="0">🔰 サンプルコード：Excelに書き出す</a></li><li><a href="#toc22" tabindex="0">🔄 上書き・追記の注意点</a></li></ol></li><li><a href="#toc23" tabindex="0">5. CSV・Excel以外の書き込み先はある？</a><ol><li><a href="#toc24" tabindex="0">✅ JSONファイル｜構造化データに便利</a></li><li><a href="#toc25" tabindex="0">✅ SQLite｜軽量なデータベースに保存</a></li><li><a href="#toc26" tabindex="0">✅ Googleスプレッドシート｜クラウド共有に最適</a></li><li><a href="#toc27" tabindex="0">🧭 選択肢のまとめ</a></li></ol></li><li><a href="#toc28" tabindex="0">6. まとめ｜目的に合った保存形式を選ぼう</a><ol><li><a href="#toc29" tabindex="0">✅ おさらい：書き込み方法まとめ</a></li><li><a href="#toc30" tabindex="0">🧩 保存形式の選び方</a></li></ol></li><li><a href="#toc31" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに</span></h2>



<p>Pythonでデータを処理できるようになると、「処理した結果をどこかに保存したいな」と思うことが増えてきますよね。<br>そんなとき、よく使われるのが<strong>CSVファイル</strong>や**Excelファイル（.xlsx）**です。</p>



<p>たとえば、次のようなシーンで役立ちます：</p>



<ul class="wp-block-list">
<li>Webスクレイピングで取得したデータをCSVにまとめたい</li>



<li>毎月の売上データをExcelに自動で出力したい</li>



<li>社内で共有するために決まったフォーマットのファイルを生成したい</li>
</ul>



<p>Googleスプレッドシートも便利ですが、「インターネット接続がない環境」や「社内でファイル共有がメインの職場」では、<strong>ローカルファイル形式（CSVやExcel）の方が使い勝手がいい</strong>ことも多いです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>また、CSVやExcelはWindowsやMacなど**どの環境でも読み書きできる「万能フォーマット」**です。<br>Pythonから簡単に出力できるので、<strong>自動化や業務効率化にもピッタリ</strong>なんですよ。</p>



<p>この記事では、Python初心者でも迷わず使えるように、次のポイントをやさしく解説していきます。</p>



<ul class="wp-block-list">
<li><code>csv</code>モジュールを使ってCSVファイルに書き込む方法</li>



<li><code>openpyxl</code>を使ってExcelファイルに書き込む方法</li>



<li>pandasを使った効率的なデータ出力の方法</li>



<li>CSV・Excel以外の選択肢（JSONやSQLiteなど）</li>
</ul>



<p>「スプレッドシート以外の選択肢も知りたい！」という方にもおすすめの内容になっています。<br>それではさっそく、CSVファイルの書き込みから見ていきましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc2">2-1. CSVとは？用途と特徴</span></h2>



<p>まずはCSVについてざっくり説明しておきましょう！</p>



<p><strong>CSV（カンマ区切り値／Comma-Separated Values）ファイル</strong>とは、データを<strong>カンマ（,）で区切って並べたテキストファイル</strong>のことです。<br>拡張子は「<code>.csv</code>」で、テキストエディタでもExcelでも簡単に開くことができます。</p>



<p>たとえば、次のような形式がCSVです：</p>



<pre class="wp-block-preformatted"><code>名前,年齢,職業<br>田中太郎,28,エンジニア<br>佐藤花子,35,デザイナー<br></code></pre>



<h3 class="wp-block-heading"><span id="toc3">✅ CSVのメリット</span></h3>



<ul class="wp-block-list">
<li><strong>ファイルサイズが軽い</strong>：中身はただのテキストなので軽量。</li>



<li><strong>読みやすい＆扱いやすい</strong>：エクセルやGoogleスプレッドシートで開ける。</li>



<li><strong>他システムとの連携がしやすい</strong>：多くのアプリやサービスがCSVをサポート。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc4">🚫 CSVの注意点</span></h3>



<ul class="wp-block-list">
<li>セルの結合やグラフなど<strong>Excelの高度な機能は使えない</strong></li>



<li>カンマや改行が入ったデータは<strong>エスケープ処理</strong>が必要になることもある</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>つまり、「<strong>シンプルなデータ保存ややり取りには最適だけど、装飾はできない</strong>」というのがCSVの特徴です。<br>次は、このCSVファイルに<strong>Pythonで書き込む基本の方法</strong>を解説します！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc5">2-2. csvモジュールでの書き込み手順</span></h2>



<p>Pythonには、CSVファイルを扱うための<strong>標準モジュール <code>csv</code></strong> が用意されています。<br>つまり、<strong>追加でライブラリをインストールしなくてもすぐに使える</strong>んです！</p>



<p>ここでは、CSVファイルにデータを書き込む基本的な方法を紹介します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc6">🔰 サンプルコード：CSVファイルに書き込む</span></h3>



<pre class="wp-block-preformatted"><code>import csv<br><br># 書き込むデータ（リストのリスト形式）<br>data = [<br>    ["名前", "年齢", "職業"],<br>    ["田中太郎", 28, "エンジニア"],<br>    ["佐藤花子", 35, "デザイナー"]<br>]<br><br># ファイルを開いて書き込む<br>with open("sample.csv", "w", newline="", encoding="utf-8") as file:<br>    writer = csv.writer(file)<br>    writer.writerows(data)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc7">📝 コードの解説</span></h3>



<ul class="wp-block-list">
<li><code>open("sample.csv", "w", newline="", encoding="utf-8")</code>:<br>CSVファイルを「書き込みモード（<code>w</code>）」で開いています。文字コードは日本語対応の<code>utf-8</code>。<br><code>newline=""</code>は、Windows環境で<strong>改行が2重になるのを防ぐ</strong>ための対策です。</li>



<li><code>csv.writer(file)</code>:<br><code>writer</code>オブジェクトを作成します。これを使ってデータを書き込みます。</li>



<li><code>writer.writerows(data)</code>:<br>リストのリスト形式（2次元）で渡すと、<strong>1行ずつ自動で書き込んでくれる</strong>便利な関数です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc8">📂 出力されるCSVファイルの中身</span></h3>



<pre class="wp-block-preformatted"><code>名前,年齢,職業<br>田中太郎,28,エンジニア<br>佐藤花子,35,デザイナー<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Excelで開けば、ちゃんと行と列に分かれた表形式で表示されますよ！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc9">3-1. Excel操作にはopenpyxlが便利</span></h2>



<p>CSVはとってもシンプルで使いやすいんですが、<br>「セルの装飾をしたい」「複数のシートを使いたい」「関数やグラフも含めたい」<br>──そんなときに出番なのが<strong>Excel（.xlsx）形式</strong>です！</p>



<p>PythonでExcelファイルを操作するには、<strong><code>openpyxl</code>というライブラリ</strong>がよく使われます。<br>Microsoft Excel 2007以降で使われている「.xlsx形式」に対応していて、セルの装飾や数式の設定もできます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc10">✅ openpyxlの特徴</span></h3>



<ul class="wp-block-list">
<li>Excelのセルに<strong>自由にデータを書き込める</strong></li>



<li><strong>行や列の挿入／削除、スタイル変更、グラフ挿入</strong>なども可能</li>



<li><code>.xlsx</code>ファイルを<strong>新規作成も編集もOK！</strong></li>



<li>Excelをインストールしていなくても使える</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc11">🔧 openpyxlのインストール方法</span></h3>



<p>まずは、まだインストールしていない場合は次のコマンドで導入しましょう。</p>



<pre class="wp-block-preformatted"><code>pip install openpyxl<br></code></pre>



<p>数秒で完了します！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc12">3-2. openpyxlを使った書き込み手順</span></h2>



<p><code>openpyxl</code>を使えば、Excelのセルに<strong>自由にデータを書き込むことができます。</strong><br>ここでは、新しいExcelファイルを作って、データを入力して保存するまでの流れを見ていきましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc13">🔰 サンプルコード：Excelファイルに書き込み</span></h3>



<pre class="wp-block-preformatted"><code>from openpyxl import Workbook<br><br># 新しいワークブック（Excelファイル）を作成<br>wb = Workbook()<br><br># アクティブなワークシートを取得<br>ws = wb.active<br><br># シート名を変更（任意）<br>ws.title = "社員名簿"<br><br># データの書き込み（行単位で指定）<br>ws.append(["名前", "年齢", "部署"])<br>ws.append(["田中太郎", 28, "開発"])<br>ws.append(["佐藤花子", 35, "デザイン"])<br><br># ファイルとして保存<br>wb.save("sample.xlsx")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc14">📝 コードの解説</span></h3>



<ul class="wp-block-list">
<li><code>Workbook()</code>：新しいExcelファイル（ワークブック）を作成します。</li>



<li><code>wb.active</code>：デフォルトのワークシート（Sheet）を取得します。</li>



<li><code>ws.append(...)</code>：行単位でデータを追加できます。リスト形式で渡すだけでOK！</li>



<li><code>wb.save("ファイル名.xlsx")</code>：Excelファイルとして保存します。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc15">📁 実際の出力ファイルのイメージ</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>名前</th><th>年齢</th><th>部署</th></tr></thead><tbody><tr><td>田中太郎</td><td>28</td><td>開発</td></tr><tr><td>佐藤花子</td><td>35</td><td>デザイン</td></tr></tbody></table></figure>



<p>このファイルをExcelで開くと、ちゃんと整った表になっています！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc16">🧠 ワンポイントアドバイス</span></h3>



<p>複数のシートに書き込みたいときはこうします：</p>



<pre class="wp-block-preformatted"><code>ws2 = wb.create_sheet(title="売上データ")<br>ws2.append(["日付", "金額"])<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Excelらしい機能もいろいろ追加できますが、まずはこの基本をマスターしておけばOKです！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc17">4. pandasを使ってCSVやExcelに書き込む方法（応用編）</span></h2>



<p>ここまで標準モジュールや<code>openpyxl</code>を使った方法を紹介してきましたが、<br>**もっとスマートにデータを書き込みたい！**という方におすすめなのが「<strong>pandas（パンダス）</strong>」です。</p>



<p>pandasを使えば、データを**DataFrame（表形式のデータ構造）**にまとめて、<br>たった1行でCSVやExcelファイルに書き出すことができます！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc18">✅ pandasのインストール</span></h3>



<p>まだインストールしていない場合は、次のコマンドで導入しておきましょう：</p>



<pre class="wp-block-preformatted"><code>pip install pandas openpyxl<br></code></pre>



<p>※Excel出力のために<code>openpyxl</code>も一緒に入れておきます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">🔰 サンプルコード：CSVに書き出す</span></h3>



<pre class="wp-block-preformatted"><code>import pandas as pd<br><br># データフレームの作成<br>data = {<br>    "名前": ["田中太郎", "佐藤花子"],<br>    "年齢": [28, 35],<br>    "部署": ["開発", "デザイン"]<br>}<br>df = pd.DataFrame(data)<br><br># CSVファイルに出力<br>df.to_csv("pandas_sample.csv", index=False, encoding="utf-8")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc20">📝 ポイント解説（CSV出力）</span></h3>



<ul class="wp-block-list">
<li><code>index=False</code>：行番号（インデックス）をCSVに含めないようにするオプション</li>



<li><code>encoding="utf-8"</code>：文字化け防止（特に日本語のデータを扱うとき）</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">🔰 サンプルコード：Excelに書き出す</span></h3>



<pre class="wp-block-preformatted"><code># Excelファイルに出力<br>df.to_excel("pandas_sample.xlsx", index=False)<br></code></pre>



<p>たったこれだけで、Excelファイルが出力されます。<br>複雑な書式設定はできませんが、「とりあえず表にして保存したい！」という用途ならこれで十分です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">🔄 上書き・追記の注意点</span></h3>



<ul class="wp-block-list">
<li><code>to_csv()</code>や<code>to_excel()</code>は<strong>ファイルを上書き保存</strong>します。</li>



<li>追記（append）したい場合は、いったんファイルを読み込んでから<code>concat()</code>などで合成して保存しましょう。</li>
</ul>



<pre class="wp-block-preformatted"><code># ファイルを読み込み、既存データに新しいデータを結合<br>existing = pd.read_csv("pandas_sample.csv")<br>new_data = pd.DataFrame({"名前": ["山田太一"], "年齢": [30], "部署": ["営業"]})<br>combined = pd.concat([existing, new_data], ignore_index=True)<br>combined.to_csv("pandas_sample.csv", index=False, encoding="utf-8")<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>pandasはこのように、データ分析にも保存処理にも便利な「万能ツール」です。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc23">5. CSV・Excel以外の書き込み先はある？</span></h2>



<p>ここまで、CSVとExcelへの書き込み方法を紹介してきましたが、<br>実はPythonでは<strong>それ以外にもデータの保存先がたくさん</strong>あるんです！</p>



<p>「CSVやExcelだと扱いづらいな…」と思ったときは、ぜひ以下の選択肢も検討してみてください。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc24">✅ JSONファイル｜構造化データに便利</span></h3>



<p>JSON（JavaScript Object Notation）は、辞書やリストのような<strong>ネストされたデータ構造をそのまま保存</strong>できるのが特徴。</p>



<pre class="wp-block-preformatted"><code>import json<br><br>data = {"名前": "田中太郎", "年齢": 28, "部署": "開発"}<br><br>with open("data.json", "w", encoding="utf-8") as f:<br>    json.dump(data, f, ensure_ascii=False, indent=2)<br></code></pre>



<ul class="wp-block-list">
<li><strong>見た目がきれいで読みやすい</strong></li>



<li><strong>APIやWebサービスと相性が良い</strong></li>



<li>Excelでの編集はできないが、プログラム間でのやり取りに最適</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc25">✅ SQLite｜軽量なデータベースに保存</span></h3>



<p>もしデータがどんどん増えるような場合や、検索やフィルタ機能が必要なら、**SQLite（組み込み型データベース）**が便利です。</p>



<pre class="wp-block-preformatted"><code>import sqlite3<br><br>conn = sqlite3.connect("example.db")<br>cur = conn.cursor()<br><br>cur.execute("CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER, department TEXT)")<br>cur.execute("INSERT INTO users VALUES (?, ?, ?)", ("田中太郎", 28, "開発"))<br><br>conn.commit()<br>conn.close()<br></code></pre>



<ul class="wp-block-list">
<li>データベース操作が可能（検索、更新、削除）</li>



<li><code>.db</code>ファイル1つで完結する</li>



<li>Pythonからの操作もとても簡単</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc26">✅ Googleスプレッドシート｜クラウド共有に最適</span></h3>



<p>「複数人でリアルタイムに編集したい」「社内で共有したい」という場合は、Googleスプレッドシートが有力な選択肢。</p>



<p>👉 詳しくは：<a target="_blank" href="https://python.cbagames.jp/2025/06/04/python-google-spreadsheet-gspread/">PythonでGoogleスプレッドシートを操作する方法</a>をご覧ください！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc27">🧭 選択肢のまとめ</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>保存先</th><th>特徴</th><th>向いている用途</th></tr></thead><tbody><tr><td>CSV</td><td>シンプル・軽量</td><td>表形式の基本データの保存</td></tr><tr><td>Excel（xlsx）</td><td>装飾やシート分けができる</td><td>見た目も大事な帳票やレポート</td></tr><tr><td>JSON</td><td>ネスト構造に対応</td><td>構造化データの保存やAPI連携</td></tr><tr><td>SQLite</td><td>検索や管理がしやすい</td><td>アプリ内データ保存や大量データ管理</td></tr><tr><td>スプレッドシート</td><td>クラウドで共有・自動化しやすい</td><td>社内共有、自動レポート生成</td></tr></tbody></table></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>目的や環境に合わせて、<strong>最適な保存形式を選ぶことが業務効率化のカギ</strong>になります！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc28">6. まとめ｜目的に合った保存形式を選ぼう</span></h2>



<p>この記事では、PythonでデータをCSVやExcelに書き込む方法を中心に紹介してきました。<br>さらに、JSONやSQLite、Googleスプレッドシートなどの<strong>他の保存形式</strong>も取り上げました。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc29">✅ おさらい：書き込み方法まとめ</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>形式</th><th>主な方法</th><th>特徴</th></tr></thead><tbody><tr><td><strong>CSV</strong></td><td><code>csv</code>モジュール、<code>pandas</code></td><td>軽量・シンプルで汎用性あり</td></tr><tr><td><strong>Excel（.xlsx）</strong></td><td><code>openpyxl</code>、<code>pandas</code></td><td>装飾や複数シート対応、見た目が整えられる</td></tr><tr><td><strong>JSON</strong></td><td><code>json</code>モジュール</td><td>ネストされたデータも保存できる</td></tr><tr><td><strong>SQLite</strong></td><td><code>sqlite3</code>モジュール</td><td>データベース操作が可能、大量データに強い</td></tr><tr><td><strong>スプレッドシート</strong></td><td><code>gspread</code>などの外部ライブラリ</td><td>クラウド連携、自動化、複数人での同時編集OK</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc30">🧩 保存形式の選び方</span></h3>



<ul class="wp-block-list">
<li><strong>簡単な表を保存したい</strong> → CSV</li>



<li><strong>Excelで資料を配りたい・整えたい</strong> → Excel</li>



<li><strong>構造化されたデータを保存したい</strong> → JSON</li>



<li><strong>本格的なデータベースとして活用したい</strong> → SQLite</li>



<li><strong>社内共有・自動レポートに使いたい</strong> → Googleスプレッドシート</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Pythonにはいろいろな保存方法があるからこそ、**「何のために保存したいのか？」**を明確にすると、最適な手段が見えてきます。</p>



<p>この機会にぜひ、自分の目的にぴったりな方法を見つけて、日々の業務や学習をもっとラクにしていきましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc31">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">CSVとExcelの違いって何？どちらを使えばいいの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><strong>CSV</strong>はただのテキストファイルで、軽量で汎用性があります。一方、**Excel（.xlsx）**は装飾や数式、複数シートなどの機能を持つ高機能なファイル形式です。</p>



<ul class="wp-block-list">
<li>見た目を整えたい → <strong>Excel</strong></li>



<li>軽くてシンプルな保存がしたい → <strong>CSV</strong></li>
</ul>



<p>どちらを選ぶかは「誰に渡すか・どう使うか」で決めましょう。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">pandasで保存したCSVファイルが文字化けします…</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><code>to_csv()</code>で日本語を含むCSVを保存する場合、**<code>encoding="utf-8-sig"</code>**と指定すると、Excelでの文字化けを防げます。</p>



<pre class="wp-block-preformatted"><code>df.to_csv("file.csv", index=False, encoding="utf-8-sig")</code></pre>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Excelファイルに追記したい場合はどうすればいい？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><code>openpyxl</code>で既存のExcelファイルを開いて、そこにデータを追加できます：</p>



<pre class="wp-block-preformatted"><code>from openpyxl import load_workbook<br><br>wb = load_workbook("sample.xlsx")<br>ws = wb.active<br>ws.append(["新しい行のデータ"])<br>wb.save("sample.xlsx")</code></pre>
</div></dd></dl></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/05/python-csv-excel-write/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PythonでWebスクレイピングしてスプレッドシートに自動書き込みする方法【初心者向け】</title>
		<link>https://python.cbagames.jp/2025/06/03/python-web-scraping-to-spreadsheet/</link>
					<comments>https://python.cbagames.jp/2025/06/03/python-web-scraping-to-spreadsheet/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Tue, 03 Jun 2025 05:54:54 +0000</pubDate>
				<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[Google Sheets API]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Webスクレイピング]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=69</guid>

					<description><![CDATA[目次 1. はじめに2. 必要なライブラリと事前準備● まずは必要なライブラリをインストールしよう● GoogleスプレッドシートのAPIを使う準備手順① Google Cloud Platformにアクセス手順② Go [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10"><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. はじめに</a></li><li><a href="#toc2" tabindex="0">2. 必要なライブラリと事前準備</a><ol><li><a href="#toc3" tabindex="0">● まずは必要なライブラリをインストールしよう</a></li><li><a href="#toc4" tabindex="0">● GoogleスプレッドシートのAPIを使う準備</a><ol><li><a href="#toc5" tabindex="0">手順① Google Cloud Platformにアクセス</a></li><li><a href="#toc6" tabindex="0">手順② Google Sheets APIを有効にする</a></li><li><a href="#toc7" tabindex="0">手順③ 認証情報（credentials.json）をダウンロード</a></li><li><a href="#toc8" tabindex="0">手順④ スプレッドシートの共有設定</a></li></ol></li></ol></li><li><a href="#toc9" tabindex="0">3. Webスクレイピングの基本コード</a><ol><li><a href="#toc10" tabindex="0">● スクレイピングで使うライブラリ</a></li><li><a href="#toc11" tabindex="0">● サンプルコード：ニュースサイトから記事タイトルを取得</a></li><li><a href="#toc12" tabindex="0">● 出力例（※実行時期によって変わります）</a></li><li><a href="#toc13" tabindex="0">● ポイント解説</a></li><li><a href="#toc14" tabindex="0">● 注意ポイント</a></li></ol></li><li><a href="#toc15" tabindex="0">4. Googleスプレッドシートへ書き込む方法</a><ol><li><a href="#toc16" tabindex="0">● 必要なライブラリをおさらい</a></li><li><a href="#toc17" tabindex="0">● スプレッドシートへ書き込む基本コード</a></li><li><a href="#toc18" tabindex="0">● ここまでの流れまとめ</a></li><li><a href="#toc19" tabindex="0">● 画面イメージ（スプレッドシートに書き込まれる内容）</a></li><li><a href="#toc20" tabindex="0">● ワンポイントアドバイス</a></li></ol></li><li><a href="#toc21" tabindex="0">5. 実践：スクレイピング→スプレッドシート書き込みまでの一連のコード例</a><ol><li><a href="#toc22" tabindex="0">● やることまとめ</a></li><li><a href="#toc23" tabindex="0">● 実践コード全体（コピペOK！）</a></li><li><a href="#toc24" tabindex="0">● 実行前のチェックリスト ✅</a></li><li><a href="#toc25" tabindex="0">● 実行するとどうなる？</a></li><li><a href="#toc26" tabindex="0">● 応用のヒント 💡</a></li></ol></li><li><a href="#toc27" tabindex="0">6. エラー対処法とよくあるつまずきポイント</a><ol><li><a href="#toc28" tabindex="0">✅ よくあるエラーとその解決法</a></li><li><a href="#toc29" tabindex="0">● ① FileNotFoundError: [Errno 2] No such file or directory: 'credentials.json'</a></li><li><a href="#toc30" tabindex="0">● ② gspread.exceptions.APIError: 403 PERMISSION_DENIED</a></li><li><a href="#toc31" tabindex="0">● ③ requests.exceptions.ConnectionError や Timeout</a></li><li><a href="#toc32" tabindex="0">● ④ スプレッドシートに書き込んだデータの行列がズレる・空欄になる</a></li><li><a href="#toc33" tabindex="0">● ⑤ APIの呼び出し制限（Rate Limit）にひっかかる</a></li><li><a href="#toc34" tabindex="0">🔰 トラブルを避けるコツ</a></li></ol></li><li><a href="#toc35" tabindex="0">7. まとめ</a><ol><li><a href="#toc36" tabindex="0">📌 今回のポイントをおさらい</a></li><li><a href="#toc37" tabindex="0">🧠 Python × Googleスプレッドシートは最強の自動化コンビ！</a></li><li><a href="#toc38" tabindex="0">あわせて読みたい</a></li></ol></li><li><a href="#toc39" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに</span></h2>



<p>Pythonを使って<br><strong>「Webサイトの情報を自動で取得し、そのままGoogleスプレッドシートに保存したい」</strong><br>と思ったことはありませんか？</p>



<p>たとえば、</p>



<ul class="wp-block-list">
<li>Webサイトの商品価格を定期的にチェックしたい</li>



<li>ニュースやデータを毎日自動で一覧化したい</li>



<li>コピペ作業をやめて、作業を全部自動化したい</li>
</ul>



<p>こうした作業は、<strong>PythonのWebスクレイピング＋Googleスプレッドシート連携</strong>でまとめて解決できます。</p>



<p>この記事では、<br><strong>Python初心者でもつまずかずに実装できるように</strong>、</p>



<ul class="wp-block-list">
<li>Webスクレイピングとは何か</li>



<li>PythonでWebデータを取得する基本の考え方</li>



<li>取得したデータをGoogleスプレッドシートに自動で書き込む方法</li>
</ul>



<p>を、コード例付きでやさしく解説していきます。</p>



<p>「スクレイピングって難しそう…」「API設定が不安…」という方でも大丈夫です。<br><strong>コピペしながら動かせるレベル</strong>を目標に、順番に説明していきますので、<br>Pythonでの自動化を初めて体験したい方は、ぜひ最後まで読んでみてください。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc2">2. 必要なライブラリと事前準備</span></h2>



<p>PythonでWebスクレイピングをして、Googleスプレッドシートに書き込むには、いくつかの**準備と道具（ライブラリ）**が必要です。ここでは、初心者でも迷わずにできるように、手順をひとつずつ紹介していきます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc3">● まずは必要なライブラリをインストールしよう</span></h3>



<p>以下のライブラリを使います：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ライブラリ名</th><th>役割</th></tr></thead><tbody><tr><td><code>requests</code></td><td>Webサイトから情報を取得するため</td></tr><tr><td><code>beautifulsoup4</code></td><td>HTMLを読みやすい形に変換してデータを取り出すため</td></tr><tr><td><code>gspread</code></td><td>Googleスプレッドシートを操作するため</td></tr><tr><td><code>gspread_dataframe</code></td><td>pandasのデータをそのままスプレッドシートに書き込むため</td></tr><tr><td><code>oauth2client</code></td><td>Googleの認証に使う</td></tr><tr><td><code>pandas</code></td><td>データを表形式（表＝DataFrame）で管理するため</td></tr></tbody></table></figure>



<p>以下のコマンドをターミナルまたはコマンドプロンプトにコピペして実行しましょう：</p>



<pre class="wp-block-preformatted"><code>pip install requests beautifulsoup4 gspread gspread_dataframe oauth2client pandas<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc4">● GoogleスプレッドシートのAPIを使う準備</span></h3>



<p>GoogleのスプレッドシートをPythonから操作するには、「Googleに自分のプログラムを使ってもOKだよ！」と<strong>許可をもらうための設定</strong>が必要です。ちょっとだけ手間ですが、一度やれば使い回せます！</p>



<h4 class="wp-block-heading"><span id="toc5">手順① Google Cloud Platformにアクセス</span></h4>



<p>以下のサイトにアクセスします：<br>🔗 <a rel="noopener" target="_blank" href="https://console.cloud.google.com/">https://console.cloud.google.com/</a></p>



<ol class="wp-block-list">
<li>Googleアカウントでログインします。</li>



<li>プロジェクトを作成（適当な名前でOK）</li>
</ol>



<h4 class="wp-block-heading"><span id="toc6">手順② Google Sheets APIを有効にする</span></h4>



<ol class="wp-block-list">
<li>「APIとサービス」→「ライブラリ」を選びます</li>



<li>「Google Sheets API」を検索して「有効にする」</li>
</ol>



<h4 class="wp-block-heading"><span id="toc7">手順③ 認証情報（credentials.json）をダウンロード</span></h4>



<ol class="wp-block-list">
<li>「認証情報」→「認証情報を作成」→「サービスアカウントキー」</li>



<li>「新しいサービスアカウントを作成」→「ロールは編集者などでOK」</li>



<li>「JSON形式」で作成してダウンロード<br>👉 これが <code>credentials.json</code> です！大事に保管してください。</li>
</ol>



<p>🎒このファイルは、プログラムと同じフォルダに置いておきましょう。</p>



<h4 class="wp-block-heading"><span id="toc8">手順④ スプレッドシートの共有設定</span></h4>



<p>スプレッドシートを作成したら、上記のサービスアカウントのメールアドレスに<strong>編集権限を付けて共有</strong>してください（例：<code>example@project-id.iam.gserviceaccount.com</code>）。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで準備は完了です！<br>次は、実際にWebサイトから情報をスクレイピングする方法を見ていきましょう。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc9">3. Webスクレイピングの基本コード</span></h2>



<p>ここでは、Pythonを使ってWebサイトから情報を取り出す「スクレイピング」の基本を学んでいきます。</p>



<p>「難しそう…」と感じるかもしれませんが、必要なのはたった数行のコードだけ！<br>今回は、ニュースサイトの見出しを例にして、HTMLから必要な部分を取り出す方法をやさしく解説します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc10">● スクレイピングで使うライブラリ</span></h3>



<p>スクレイピングに使う主なライブラリはこの2つです：</p>



<ul class="wp-block-list">
<li><code>requests</code>：Webページを取得（ダウンロード）する</li>



<li><code>BeautifulSoup</code>：HTMLの中から情報を探して取り出す</li>
</ul>



<p>では、実際のコードを見てみましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc11">● サンプルコード：ニュースサイトから記事タイトルを取得</span></h3>



<pre class="wp-block-preformatted"><code>import requests<br>from bs4 import BeautifulSoup<br><br># スクレイピングしたいWebサイトのURL<br>url = "https://news.yahoo.co.jp/"<br><br># サイトのHTMLを取得<br>response = requests.get(url)<br><br># 正常に取得できたか確認（200 = OK）<br>if response.status_code == 200:<br>    # HTMLの内容を解析<br>    soup = BeautifulSoup(response.text, "html.parser")<br>    <br>    # 見出しタグをすべて探す（Yahooニュースでは h3 タグが多い）<br>    headlines = soup.find_all("h3")<br><br>    print("記事タイトル一覧：")<br>    for h in headlines:<br>        print("-", h.get_text())<br>else:<br>    print("Webページの取得に失敗しました。")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc12">● 出力例（※実行時期によって変わります）</span></h3>



<pre class="wp-block-preformatted"><code>記事タイトル一覧：<br>- 政府が新たな対策を発表<br>- 台風の影響で大雨に警戒<br>- 人気アプリがアップデート<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc13">● ポイント解説</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>処理内容</th><th>説明</th></tr></thead><tbody><tr><td><code>requests.get(url)</code></td><td>指定したURLのページを取得します</td></tr><tr><td><code>BeautifulSoup(response.text, "html.parser")</code></td><td>ページのHTMLを解析して扱いやすくします</td></tr><tr><td><code>find_all("h3")</code></td><td><code>h3</code>タグをすべて取り出します（他のタグでもOK）</td></tr><tr><td><code>get_text()</code></td><td>タグの中の文字だけを取り出します（HTMLタグは消えます）</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc14">● 注意ポイント</span></h3>



<ul class="wp-block-list">
<li>Webサイトによって見出しのタグ（<code>h3</code>, <code>a</code>, <code>span</code> など）は違います。<br>必ずそのサイトのHTMLを確認しましょう（右クリック→「ページのソースを表示」）</li>



<li>スクレイピングが禁止されているサイトもあるので、<strong>利用規約</strong>は必ずチェック！</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc15">4. Googleスプレッドシートへ書き込む方法</span></h2>



<p>前の章では、Webスクレイピングでニュースの見出しを取り出す方法を学びました。<br>今度は、そのデータを<strong>Googleスプレッドシートに自動で書き込む方法</strong>を紹介します！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc16">● 必要なライブラリをおさらい</span></h3>



<p>Googleスプレッドシートにアクセス・操作するためには、以下のライブラリを使います：</p>



<ul class="wp-block-list">
<li><code>gspread</code>：スプレッドシートに接続・編集する</li>



<li><code>gspread_dataframe</code>：pandasのDataFrameとスプレッドシートをやりとりする</li>



<li><code>oauth2client</code>：Googleの認証情報を使う</li>



<li><code>pandas</code>：データを表形式で扱う</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc17">● スプレッドシートへ書き込む基本コード</span></h3>



<pre class="wp-block-preformatted"><code>import gspread<br>from oauth2client.service_account import ServiceAccountCredentials<br>import pandas as pd<br>from gspread_dataframe import set_with_dataframe<br><br># Google APIにアクセスするための範囲（スコープ）を設定<br>scope = [<br>    "https://spreadsheets.google.com/feeds",<br>    "https://www.googleapis.com/auth/drive"<br>]<br><br># 認証情報の読み込み<br>credentials = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)<br><br># gspreadでGoogleスプレッドシートに接続<br>client = gspread.authorize(credentials)<br><br># スプレッドシートを開く（タイトル名を指定）<br>spreadsheet = client.open("スクレイピング結果")  # ← スプレッドシート名は自分で作っておく！<br><br># シートを指定（1枚目を使用）<br>worksheet = spreadsheet.sheet1<br><br># サンプルデータ（スクレイピングした結果）<br>data = {<br>    "記事タイトル": [<br>        "政府が新たな対策を発表",<br>        "台風の影響で大雨に警戒",<br>        "人気アプリがアップデート"<br>    ]<br>}<br><br># DataFrameに変換<br>df = pd.DataFrame(data)<br><br># スプレッドシートに書き込む（既存データを上書き）<br>set_with_dataframe(worksheet, df)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc18">● ここまでの流れまとめ</span></h3>



<ol class="wp-block-list">
<li><code>credentials.json</code>でGoogleアカウントにアクセス許可を得る</li>



<li>gspreadでスプレッドシートに接続</li>



<li>pandasのDataFrameを作成</li>



<li><code>set_with_dataframe()</code>で一括書き込み！</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">● 画面イメージ（スプレッドシートに書き込まれる内容）</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>記事タイトル</th></tr></thead><tbody><tr><td>政府が新たな対策を発表</td></tr><tr><td>台風の影響で大雨に警戒</td></tr><tr><td>人気アプリがアップデート</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc20">● ワンポイントアドバイス</span></h3>



<ul class="wp-block-list">
<li>スプレッドシートの「共有設定」で、サービスアカウントのメールアドレスに「編集権限」を忘れずに！</li>



<li>すでにデータが入っている場合は<strong>上書きされる</strong>ので注意してください。</li>



<li><code>worksheet.append_row()</code>を使えば追記もできますが、DataFrame形式なら<code>set_with_dataframe()</code>が便利です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc21">5. 実践：スクレイピング→スプレッドシート書き込みまでの一連のコード例</span></h2>



<p>これまで紹介してきた、</p>



<ul class="wp-block-list">
<li>Webスクレイピングでデータを取得</li>



<li>Googleスプレッドシートに書き込む</li>
</ul>



<p>この2つを<strong>1つのPythonスクリプトにまとめて</strong>、実際に動かせるようにしてみましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">● やることまとめ</span></h3>



<p>今回のスクリプトでは、以下の流れを実行します：</p>



<ol class="wp-block-list">
<li>ニュースサイトのトップページにアクセス</li>



<li>記事の見出しを抜き出す</li>



<li>pandasのDataFrameにまとめる</li>



<li>Googleスプレッドシートに書き込む</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc23">● 実践コード全体（コピペOK！）</span></h3>



<pre class="wp-block-preformatted"><code>import requests<br>from bs4 import BeautifulSoup<br>import pandas as pd<br><br>import gspread<br>from oauth2client.service_account import ServiceAccountCredentials<br>from gspread_dataframe import set_with_dataframe<br><br># スクレイピング対象のURL<br>url = "https://news.yahoo.co.jp/"<br><br># Webページを取得<br>response = requests.get(url)<br><br># ニュースの見出しをリストに格納<br>headlines = []<br>if response.status_code == 200:<br>    soup = BeautifulSoup(response.text, "html.parser")<br>    for h in soup.find_all("h3"):<br>        title = h.get_text().strip()<br>        if title:<br>            headlines.append(title)<br>else:<br>    print("Webページの取得に失敗しました")<br><br># データをDataFrameに変換<br>df = pd.DataFrame({"記事タイトル": headlines})<br><br># Google Sheets API認証の設定<br>scope = [<br>    "https://spreadsheets.google.com/feeds",<br>    "https://www.googleapis.com/auth/drive"<br>]<br>credentials = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)<br>client = gspread.authorize(credentials)<br><br># スプレッドシートの操作<br>spreadsheet = client.open("スクレイピング結果")  # 自分で作ったスプレッドシート名<br>worksheet = spreadsheet.sheet1<br><br># スプレッドシートにデータを書き込む<br>set_with_dataframe(worksheet, df)<br><br>print("スプレッドシートに書き込みが完了しました！")<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc24">● 実行前のチェックリスト ✅</span></h3>



<ul class="wp-block-list">
<li><code>credentials.json</code> ファイルが同じフォルダにあるか確認</li>



<li>Googleスプレッドシートを事前に作成済みか確認（「スクレイピング結果」など）</li>



<li>サービスアカウントに編集権限を付与済みか確認</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc25">● 実行するとどうなる？</span></h3>



<p>スクリプトを実行すると、Yahooニュースのトップページから見出しを取得し、Googleスプレッドシートの1枚目に<strong>記事タイトルの一覧が自動で書き込まれます</strong>！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc26">● 応用のヒント 💡</span></h3>



<ul class="wp-block-list">
<li>天気サイトの気温データを毎日記録</li>



<li>ECサイトの商品価格を定期チェック</li>



<li>毎朝スクリプトを自動実行（後ほど紹介するcronなどで実現）</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc27">6. エラー対処法とよくあるつまずきポイント</span></h2>



<p>PythonでWebスクレイピングやGoogleスプレッドシート連携をしていると、<strong>最初のうちはエラーが出てしまうこともよくあります</strong>。</p>



<p>でも大丈夫！<br>ここではよくあるエラーとその原因、そして対処方法を丁寧に解説していきます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc28">✅ よくあるエラーとその解決法</span></h3>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc29">● ① FileNotFoundError: [Errno 2] No such file or directory: 'credentials.json'</span></h3>



<p><strong>原因：</strong><br>認証ファイル <code>credentials.json</code> がプログラムと同じフォルダに置かれていない、またはファイル名が違う。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li>ファイルが存在するか確認</li>



<li>拡張子まで含めて正確に「credentials.json」かどうかをチェック</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc30">● ② gspread.exceptions.APIError: 403 PERMISSION_DENIED</span></h3>



<p><strong>原因：</strong><br>スプレッドシートの共有設定で、サービスアカウントに編集権限が付いていない。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li>スプレッドシートの「共有」ボタンから、<br><code>xxxxx@project-id.iam.gserviceaccount.com</code> というメールアドレスを<strong>編集者</strong>として追加</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc31">● ③ requests.exceptions.ConnectionError や Timeout</span></h3>



<p><strong>原因：</strong><br>アクセス先のWebサイトに一時的に接続できない／ブロックされている。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li>時間を置いて再実行</li>



<li><code>headers</code> を使って「ブラウザっぽく」アクセスする（例：User-Agentを追加）</li>
</ul>



<pre class="wp-block-preformatted"><code>headers = {"User-Agent": "Mozilla/5.0"}<br>response = requests.get(url, headers=headers)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc32">● ④ スプレッドシートに書き込んだデータの行列がズレる・空欄になる</span></h3>



<p><strong>原因：</strong><br>DataFrameのデータに問題がある（空の行、特殊文字など）</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li><code>df.dropna()</code> で空データを削除</li>



<li>文字列が途中で改行されていないか確認（<code>.strip()</code> を使うときれいになります）</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc33">● ⑤ APIの呼び出し制限（Rate Limit）にひっかかる</span></h3>



<p><strong>原因：</strong><br>Google Sheets APIには「一定時間内に何回まで」という制限があります。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li>書き込みの回数を減らす（1行ずつ書くより、一括書き込みがおすすめ）</li>



<li><code>set_with_dataframe()</code> を使ってまとめて書き込む</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc34">🔰 トラブルを避けるコツ</span></h3>



<ul class="wp-block-list">
<li>一度に動かそうとせず、<strong>少しずつ動作確認しながら</strong>書いていく</li>



<li>print() を多用して、どこで止まっているかチェック</li>



<li>初回は「最小構成」で試す（データ1件だけ書き込むなど）</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで、よくあるエラーにも落ち着いて対処できるはずです！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc35">7. まとめ</span></h2>



<p>この記事では、Pythonを使ってWebサイトから情報を集め（スクレイピング）、それをGoogleスプレッドシートに自動で書き込む方法を、初心者の方にもわかりやすく紹介してきました。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc36">📌 今回のポイントをおさらい</span></h3>



<ul class="wp-block-list">
<li><strong>requests + BeautifulSoup</strong> を使えば、Webページから欲しい情報を自動で取り出せる</li>



<li><strong>gspread + pandas</strong> を使えば、スプレッドシートへの書き込みも簡単にできる</li>



<li>Googleの**認証設定（credentials.json）**は最初だけちょっと手間。でも一度設定すれば何度でも使える</li>



<li>スプレッドシートにデータを書き込めると、<strong>日々の記録や業務自動化が一気にラクになる！</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc37">🧠 Python × Googleスプレッドシートは最強の自動化コンビ！</span></h3>



<ul class="wp-block-list">
<li>「毎日手動でコピペしてる情報がある…」</li>



<li>「表にまとめたいけど、作業が面倒…」</li>
</ul>



<p>そんな悩みを持つ人にこそ、Pythonでのスクレイピング＆スプレッドシート連携は大きな助けになります！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc38">あわせて読みたい</span></h3>



<p>Google Sheets APIの使い方や認証の流れ、<code>gspread</code>の基本をもっと詳しく知りたい方はこちら。<br>👉 <a target="_blank" href="https://python.cbagames.jp/2025/06/04/python-google-spreadsheet-gspread/">PythonでGoogleスプレッドシートを操作する方法（基本編）</a></p>



<p>スクレイピングの基礎をもう少し深掘りしたい方に。HTMLの構造とタグの選び方を解説！<br>👉 <a target="_blank" href="https://python.cbagames.jp/2025/06/04/web-scraping-requests-beautifulsoup/">【Python入門】Webスクレイピングの基本｜requestsとBeautifulSoupの使い方</a></p>



<p>Google Sheets以外にも、ローカルに保存する方法が知りたい人向け。<br>👉 <a target="_blank" href="https://python.cbagames.jp/2025/06/05/python-csv-excel-write/">【保存編】PythonでCSV・Excelファイルにデータを書き出す方法</a></p>



<h2 class="wp-block-heading"><span id="toc39">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">GoogleスプレッドシートのAPIは無料で使えますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>はい、基本的な使い方であれば無料で使えます。<br>Googleは一定の回数まで無料でAPIを提供しており、スクレイピング結果を1日1回書き込む程度なら問題ありません。大量にリクエストを送る場合は制限に注意しましょう。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content"><code>credentials.json</code>って何？どこから手に入れるの？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p><code>credentials.json</code> は、あなたのPythonプログラムがGoogleスプレッドシートにアクセスするための**カギ（認証情報）**です。<br>Google Cloud ConsoleでAPIを有効にして、サービスアカウントを作成し、そこからダウンロードできます。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">スクレイピングしてもデータが取得できないのはなぜ？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>以下のような理由が考えられます：</p>



<ul class="wp-block-list">
<li>アクセス先のサイトがスクレイピングを禁止している</li>



<li>HTML構造が変わった（タグ名が違う）</li>



<li>JavaScriptで動的に生成されているサイト（この場合は Selenium などが必要）</li>



<li><code>User-Agent</code> を設定していないためアクセスがブロックされている</li>
</ul>
</div></dd></dl></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/03/python-web-scraping-to-spreadsheet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
