Pythonを一から勉強してデータ分析できるようになる

~ Pythonとデータ分析のお勉強の記録 ~

2024-04-01から1ヶ月間の記事一覧

スクレイピング:画像ファイルを読み込んで保存する

ファイル保存の基本的な考え方は次の通りだと思う。 1.保存先ファイルをフルパスで定義する 2.そのファイルに保存するデータを指定する 3.ファイル作成(保存) [Take1] まずは、普通に画像を読み込んで保存する。 【書式】 imgdata=requests.get(画像URL) w…

スクレイピング:オーディオヴィジュアル製品のパッケージ画像URLを取得する

商品コードを検索キーにして、商品紹介ページにあるパッケージ画像のURLを取得したい。 amazonとかの著名ecサイトでは弾かれてしまうが、一応、動作したのでメモしておく。 (実際URLは伏せておく) [TAKE1] まずは、コード番号から検索用のURLを生成し、その…

スクレイピング:リンクの抽出と加工

[Take0] とりあえず、リンクタグ(href)を抜き出す。 【書式】 値=要素.get("属性名") 例) <a href="https://20200105.hatenadiary.jp/entry/2024/04/14/154750">直リンク</a> 要素:<a href="https://20200105.hatenadiary.jp/entry/2024/04/14/154750">直リンク</a> 属性名:a 値:https://20200105.hatenadiary.jp/entry/2024/04/14/154750 値=要素.get("属性名") 例)

スクレイピング:実際のニュースサイトのトピックリスト取得

yahooニュースのトピックリスト情報の取得 【書式】 問題あると困るのでアドレスは架空のもので記述する。 【コード】 import requests from bs4 import BeautifulSoup # webページを取得して解析する load_url="https://news.yahho.co.jp/categories/it" ht…

スクレイピング:Beautifiul Soup を使って、HTMLの解析を行ってみる

[Take0] やりたいことのイメージ [Take1] とりあえず、HTML取得して表示する BeautifulSoupとはHTML解析用のライブラリらしい。 【書式】 BeautifulSoup(解析対象のHTML/XML, 利用するパーサー) https://ai-inter1.com/beautifulsoup_1/ パーサ(parser)と…

スクレイピング:取得したデータをファイルに書き込む

[Take1] 所定URLのソース文字コードを保存する 【書式】 f=open(filename,mode="w") f.write(書き込む値) f.close() openのオプション(表形式で書いてみる) 【コード】 import requests url="https://20200105.hatenadiary.jp/entry/2024/04/30/152528" re…

dfの操作:dfの結合

[Take0] 事例用dfの作成 【書式】 【コード】 import pandas as pd # テスト用dfの作成 df1 = pd.DataFrame({'学生番号': ['001','002','003','004'], '試験結果': ['不合格','合格','合格','合格'], '試験区分':['A','B','C','A']}) df2 = pd.DataFrame({'…

dfの操作:データクレンジング

[Take1] データの欠損を確認する 【書式】 df.isnull() 【コード】 import pandas as pd # テストデータの読み込み df = pd.read_csv("/content/drive/MyDrive/Python_2024/004/test6.csv",encoding="shift_jis") # データの欠損を確認する df.isnull() 【結…

dfの操作:データの削除と修正

[Take1] 特定の列を削除する 【書式】 列の削除 df.drop(columns="削除する列名") dfのコピー(バックアップ的なもの) df.copy() 複数列を削除する場合は、「列名のリスト」を引数に渡す 【コード】 import pandas as pd # テスト用dfの作成 list1=[[1,2,3,…

dfの操作:データの「行」の追加

[Take0] テスト用のDFを作成する 列数が4で、行数が3のdfを作る 【書式】 【コード】 import pandas as pd # テスト用dfの作成 list1=[[1,2,3,4],[5,6,7,8],[9,10,11,12]] index1 = ["Row1", "Row2", "Row3"] columns1 =["Col1", "Col2", "Col3", "Col4"] …

dfの操作:データ列の追加

代入する値 ・スカラー:どの行にも共通した値を代入 ・リスト:行ごとに値が異なる場合 ・Series:ほかの列データから値を加工して代入 [Take0] テスト用のDFを作成する 【書式】 【コード】 # 列数が4で、行数が3のdfを作る import pandas as pd list1=[…

dfの確認:読み込んだデータの表示

[Take1] 先頭5行の表示 【書式】 df.head(n) オプション n 先頭から何行目まで表示するか?(省略した場合5行) 【コード】 import pandas as pd df=pd.read_excel("/content/drive/MyDrive/Python_2024/002/iris-l.xlsx",index_col=None,usecols=["sepal_le…

dfの確認:データの選択

[Take1] 特定の列を取り出す 【書式】 列を取り出す df["列名"] 【コード】 import pandas as pd # テストデータの読み込み df = pd.read_csv("/content/drive/MyDrive/Python_2024/004/test5.csv",encoding="shift_jis") # 名前を取り出す df2=df["名前"] #…

dfの確認:データの読み込み

[Take1] CSVデータをdfオブジェクトとして読み込む 【書式】 pandas.read_csv('データ名.csv',encoding='もジコード',index_col='インデックス列名',usecols=['列名1','列名2','列名3'],dtypes={"対象列名":"データ型"}) オプション encoding 文字コード ind…

dfの確認:describe()を使って、データの要約統計量を取得する

[Take1] まずは要約統計量を計算する 【書式】 df.describe() 戻り値として出てくる統計量 【コード】 import pandas as pd # テストデータの読み込み df = pd.read_csv("/content/drive/MyDrive/Python_2024/004/test6.csv",encoding="shift_jis") # 要約統…

dfの確認:データの集約(集計)~列情報毎に集計する

[Take1] いろいろな集約方法 【書式】 単一列による集約 df.groupby("列名") 【コード】 import pandas as pd # テストデータの読み込み df = pd.read_csv("/content/drive/MyDrive/Python_2024/004/test6.csv",encoding="shift_jis") # 「学年」列で集約し…

dfの確認:条件を付けてデータを選択する

[Take1] 数値の大小関係で絞り込む 【書式】 df[df["対象列名"] >= 50] 【コード】 import pandas as pd # テストデータの読み込み df = pd.read_csv("/content/drive/MyDrive/Python_2024/004/test5.csv",encoding="shift_jis",index_col='名前') # 数学が9…

dfの確認:データの基本量の確認

[Take1] データの基本量を確認 【書式】 データの大きさを確認 df.shape データの行数を確認 len(df) データの要素数を確認 df.size データの列名を取得 df.columns 【コード】 import pandas as pd # テストデータの読み込み df = pd.read_csv("/content/dr…

HMTLファイルの読み込み

[Take1] とりあえず読み込んでみる requests というライブラリを使用する 【書式】 response=requests.get(url) 戻り値のデータ型 requests.models.Response 【コード】 import requests url="https://20200105.hatenadiary.jp/entry/2024/04/30/152528" res…

ライブラリ導入状況確認

【書式】 今回は、[requests]といライブラリを使う。 既存環境にどうライブラリがインストールされているか確認 【コード】 py -m pip list 【結果】 Package Version contourpy 1.2.1 cycler 0.12.1 fonttools 4.51.0 joblib 1.3.2 kiwisolver 1.4.5 matplo…

テキスト領域の書式設定方法(強調)

テキストを強調表示する場合は 「*文字列*」 のように「*」 で囲う。斜体表示する場合は 「**String**」 のように 「**」 で囲う(アルファベットのみ)。

アヤメデータの分析練習

[Take0] seaborライブラリに入っているアヤメのデータを読み込む 【書式】 【コード】 import pandas as pd import seaborn as sns sns.set() df=sns.load_dataset("iris") print("先頭5データ",df.head()) print("\n") print(df.info()) 【結果】 import pa…

相関係数関係

[Take0] テスト用データの読み込み 【書式】 【コード】 import pandas as pd df=pd.read_csv("/content/drive/MyDrive/Python_2024/002/test3.csv",encoding="Shift-JIS",index_col=0) print(df) 【結果】 理科 国語 数学 94 80 100 90 88 85 95 70 90 90 6…

IQ

[Take1] 所定IQが上から何%か調べる IQ:平均100,標準偏差15の正規分布のこと→ざっくり、80から120の間にないと悲しい気分になるということ。 【書式】 【コード】 from scipy.stats import norm scorelist=[60,70,80] for score in scorelist: cdf=norm.c…

偏差値

[Take1] 偏差値60,70,80が上から何%になるか? 偏差値:平均50,標準偏差10の正規分布のこと 【書式】 cdfはCumulative Distribution Functionの頭文字 norm.cdf(対象値, loc=平均, scale=標準偏差) 【コード】 from scipy.stats import norm scorelist=[…

便利なヒストグラム seaborn を使う

[Take0] 練習用データの定義とプロット 【書式】 ライブラリ:pandas,matplotlib,seaborn 書式 sns.distplot(df["列名"],fit=norm,fit_kws={"color":"色"}) plt.show() 【コード】 %matplotlib inline import matplotlib.pyplot as plt import japanize_matp…

正規分布

[Take1] galton boardというおもちゃがあるらしい。 要は、パチンコの玉を台の真ん中に投入したら、どの辺に落ちるのか? ということを、球数と釘の段数を変数にして集計する。 で、釘にいかさまが無ければ落ちていく場所はきれいな正規分布になるんじゃない…

統計値の続き、標準偏差とか

[Take0] サンプルデータの作成 平均値は同じだが、分布の異なる2系列のデータを定義する 【書式】 書式:ディクショナリ型データの作成 data={ "項目名1": [値1], "項目名2": [値2], "項目名3":[値3] } 【コード】 import pandas as pd data={ "ID": [0,1,2,…

特殊ケースの統計値

[Take0] サンプルデータフレームの作成 【書式】 書式:散布図の凡例記述 plt.scatter([横軸],[縦軸], label="凡例") plt.legend() 【コード】 import pandas as pd import matplotlib.pyplot as plt import japanize_matplotlib data={ "A": [10,100,10,100…

matplotlibのグラフで日本語を表示する ~ japanize_matplotlib のインストール

japanize_matplotlibとは、グラフで日本語が使えるようになるライブラリ 【書式】 !pip install japanize_matplotlib 【結果】 Requirement already satisfied: japanize_matplotlib in /usr/local/lib/python3.10/dist-packages (1.1.3) Requirement alread…