Pythonを勉強してみる人の日記

仕事に元気を奪われながらなんとか続けてみたいと思う限り

Python17日目 pandasでエクセルみたいなことをする回

こんばんは。

もう夜遅いですが、仕事だけして寝るのはどうしても(会社を)許せないので少しだけPythonのお勉強をしてから寝ることにします。

 

昨日と今日でpandasを使った表形式のデータを扱っています。

df.loc[行番号]で行を取り出せる。

df["列名"]で列を取り出せる。

def["追加列名"]=["要素1","要素2","要素3"]で要素を追加できる。
列を追加したければ、df.loc[追加行番号]

削除したい場合はdf.drop("列名",axis=1)で列の削除df.drop(行番号,axis=0)で行の削除。

ふむふむ。

上手くいったら面白さはあるのですが…

まだエクセルでできる範囲を出ませんね…どのくらい勉強したらExcelの範囲を出られるのやら、先はまだまだ長そうです。

 

そして今日の最後、

df[df["列名"]を使った条件式]とすると、列単位でフィルタをかけたような状態にできるようです。

これもエクセルでできる。

Excelを発明した人は相当スゴイ人な気がしてきました。

 

今日はここまでにします。

おやすみなさい。

今日も明日も会社を辞めたいです。

 

追伸

真のホワイト企業はどこなのか。

宝くじ当てたい。

 

 

Python16日目② pandasとの遭遇

こんばんは。

16日目②を始めます。

次の章はpandasというものを勉強するとのことで、なんだかとっても便利そうな香りです。

 

早速取り掛かったのですが、標準装備されているはずのテストデータがなぜか見つからず…

test.csvというファイルがあることになっているらしいのですが、Pythonの同じ階層にはなく、PC内にもなく、結局どうやっても見つからなくて次に進めないので本に書いてある通りに入力してcsvファイルを一から作りました。力技です…

 

そして

read_csv("test.csv")

で読み込もうとすると…

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 0: invalid start byte

という真っ赤なエラーメッセージが登場。

ユニコードデコードエラー」ということで何やら01のデータを言葉に直すときの何か(わからないけど何か!)が食い違っていることによるエラーのようです。

先人のブログを検索して、

read_csv("test.csv",encoding='cp932')とすると解決することができました。

便利な世の中です。

 

読み込めたのが、こちら。

本当ならもともとあるはずなのに、改めて自分で手作りしたものなので何だか愛着が。

点数表

 

さて、まだまだ面白くなりそうなところなのですが点数表を探すのに時間がかかってしまって明日に響きそうなので今日はこのあたりで終わりにします。

毎週1日自分だけの時間が欲しいと思わされる日曜日でした。

週休3日希望。切実に…そして会社は今日も明日も辞めたいです。

 

明日からの5日間も元気に生き延びようと思います。

おやすみなさい。

 

追伸

オープンワークに会社の悪口(事実)を書いて保存するところまで来てしまった。

公開はさすがにできていません。

Python16日目① 画像をサイトから全部保存する

こんにちは。

このブログを書き始めてから初めて「こんにちは」と書いた気がします。

いつも夕方から夜にかけて開始して、初めてすぐ眠くなるというクズムーブをしていました。

大人には週1日何も予定を入れない日が必要だ…と思う今日この頃です。

Python16日目始めます。

今日は休日なので沢山進みますように・・・

 

今日はアクセスしたURLから画像をダウンロードするという内容です。

前回は「open(filename,"w")」という部分があり「書き込みモードで開く」という意味だったようですが、今回画像を開く際には「mode="wb"」とするそうです。

また、「src」属性は「外部から読み込むファイルの場所」を示すための属性とのこと。

 

サイトのURLから画像を探すのは、「img」タグを検索することで行うようです。

for element in soup.find_all("img")

そのあと「src属性」を取得すると、画像がどれかを見つけられるらしい(おそらく)

element.get("src")

 

今日の章で面白かったのは、ファイルの中で最後の「/」の直前までの部分を取り出すパート。

URLを「/」で区切られたパーツごとに分割した後、「最後から1つ目」を「-1」で指定するそうです。

url.split("/")[-1]

とすると、URLを「/」がある場所で分割、最後のパーツを取り出すことができるらしい。

何か他の場面でも使えそうな気がします。なにも思いつきはしないのですが。

 

もう1つ、今日新しく出てきてこれからも良く使いそうなプログラムがありました。

ディレクトリを作るプログラムです。

mkdir(exist_ok=True)

そのディレクトリ名が存在しなければ、新しく作る!というものだそうです。

 

そして次のページに今日一番大事なことが書いてありました。

「アクセスのし過ぎで相手のサーバーに迷惑をかけないこと」

自分のお勉強で何気なく企業のサイトにアクセスし、サーバー落ち+大損害+賠償、なんてことになったらと思うと震え上がってしまいます。気を付けなければ…

それを防ぐには、命令後に一定の時間プログラムを一時停止させればよいようです。

time.sleep(1)

とすると「1秒一時停止」ということになるらしい。

 

さて、1つの章が終わったのでいったんここまでで終わりにします。

始めに「こんにちは」と書いたにもかかわらずいまは22時…

大人にはお昼寝も大事ということです。

 

次の章では、なんだかすごく面白そうな「pandas」という、データを扱えるものを勉強してみます。

16日目②も頑張ります。

Python15日目 htmlのページからリンクを集めてくる回。

こんばんは。年度末の繁忙期で大忙しのため久しぶりのPythonです。

早く会社辞めたい…泣きたい…

今日も頑張っていきます。

 

今日もスクレイピングの続きです。

前回はhtml内の「タグ」を検索して表示するプログラムを書いたのですが、そもそもタグって種類によって何か違いがあるのでしょうか…

調べてみます。

こちらのサイトを覗かせていただきました。お邪魔します。

HTMLタグ/HTML要素一覧 - TAG index

 

HTMLのタグには、文字の大きさや色など書体を表すもの、タイトルや本文などを指定するもの、などなどいろいろ種類があるようです。

その中に、前回検索に使った<a>や<ul>がありました。

上記のサイトによると、

<a>:リンクのアンカー

<ul>:順不同のリスト

とのこと。<ul>は箇条書きみたいなもんなんですかね…きっと。

そして前回なんだか不思議で仕方なかった<li>は、リストの項目だそうです。

「リ」って何だろう。と思っていました。

なるほどなるほど。

 

そして今日検索するのに使うタグは<href>だそうです。

とここまで書いて、調べてみたらhrefはタグじゃなかった…笑

aタグの属性らしいです。ちょっとよくわかりませんが先に進みます。

 

その下にはsrcという属性も書いてあります。

srcは<img>タグの属性らしいです。

どちらにせよまだ属性が何たるかは分かりません。

 

今日分かったのはurljoinという機能があること。

この機能の呼び方が分かりません。関数?ではないような。

でも眠すぎてどうでもよくなってきました。

 

全然分からないまま今日の章が終わってしまいました。そして眠気がやってくる…

仕事はしたくない、Pythonの勉強にも集中できずスマホをいじってしまうダメな人間…

 

明日はもう少し頑張ろうと思います。

 

おやすみなさい。

 

追伸

会社に個室が欲しい

Python14日目 Yahoo!JAPANから最新ニューストピックスを持ってくる

こんばんは。Python14日目、とうとう2週間です!

Pythonに触り出したのがはるか遠くのことのようです…

数か月前からブランクを経て、今日。

サボりすぎましたが、今日も会社を辞めたいという強い心とともに頑張っていきます。

 

今日も引き続き「BeautifulSoup」を使っていきます。

本が用意してくれている練習用の情報量激少なWEBサイトからテキストデータを取ってきます。

 

プログラムの中に

html.parser

という記述があるけどこれは何なのだろう…

ということで調べてみたところ、どうやら読み取り形式のことらしいです。

省略可能で、何も書かなければデフォルトでhtml.parserになるらしい。

ほんとかな…

 

こう書きつつ正直全然わかってはいないのですが、完璧に理解しようとするよりは沢山触れて後々伏線回収ができたらいいかなくらいの気持ちで先に進んでみます。

 

一旦ここまでで「htmlのタグを探してそのひとかたまりを取ってくる」という練習が終わりました。

本のプログラムを書けないから(著作権侵害になりそうだし)きっと見る人は私が何をやっているのやら全く分からないのだろうなぁと思いつつ。

でもほぼ日記みたいなもんだからよいのです。

あと意外とブログはモチベーションになります。

 

 

さて、次は実際のWEBサイトを使ってスクレイピングです。

ワクワクする…

 

言われるがまま、下準備としてchromeデベロッパーツールを表示しました。

なんだか非常にそれっぽい画面が登場。

っぽい。

Yahoo!JAPANのサイトを開いて、タグとそれに対応するWEBページがどこなのか見てみました。

ヘッダー

メイン

だいぶ面白いです。

1つのWEBサイトがこんなに長~~いプログラムで構成されているとは全く想像していませんでした…

当然だけど人が作ってるんだなぁ…というしんみりほっこりした気持ちです。

うっかり消したらどうなるんだろう。笑

 

ニュースのタイトル一覧を持ってきましょう!というお題だったのですが、探すべきタグがどれなのか分からず…

多分本が古いから今のYahoo!JAPANと違うんでしょう…

 

何回やってもエラーになり、topicの値もNoneになるので、仕方なく適当なタグを入れていったん表示させてみました。

適当にタグを検索して表示させてみる

ワー!

すっごいことになってしまいました。

でも検索はできていそうなので、今度こそトピックスを持ってこれるように書き換えます。

 

いけ!!!!!

for~を書き換えた。

printの結果

大成功です!!!スゴイ!!

 

ちなみにもとのYahoo!JAPANのページはこんな感じ。

左上あたりのところを持ってこれました。

 

タグのクラスの名前があまりにも無作為すぎてかなり不安になりましたが、間違っていなかったようです。

 

Yahoo!JAPANからニュースを持ってくる練習ができたので今日はここまでにします。

月曜日から頑張りました。

今日も今日とて仕事辞めたい。

おやすみなさい。

 

追伸

仕事で病んじゃってる人見ると握手したくなる

Python13日目 基本用語とデータ構造を一通り理解した。と思う3連休

こんばんは!

実はここ数日、前回のブログに書いたPython早見帳をずっと読んでました。

これ。👇

はじめに — Python早見帳 (chokkan.github.io)

 

 

…ずっとは嘘で、ちょこちょこ気を散らしてツイッターを見たりYouTubeを見たり猫ミームを見たり京大のタテカンを見たり、etc...というようにわき道に逸れまくりながら読みました。

 

 

黄色く塗ったところを読んだので、Python2年生に出てくるような基本的な単語は幾らか分かるようになったのでは!と思っています。

関数の最後の一節はだいぶ難しくて、今は分かる必要ないかな…ということでいったんPython2年生に舞い戻ってきました。

進捗。関数の最後の一節で挫けた。

 

明日からはまた、Python2年生 スクレイピングのしくみ にまたお世話になります。

いつも絵がかわいくて癒されています。

本も漫画もビジュ重視なもので…

Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる! | 森 巧尚 |本 | 通販 | Amazon

 

・・・・ブログを書き出したら眠くなってしまいました…怠惰な私…

でもいったん基本的な用語とデータ構造が分かるようになった3連休なので、これはこれで良しとします。

 

寝不足のダメージを折った状態でなんて、仕事という強大な的には立ち向かえません。

出来れば倒すんじゃなくて逃げたいんですけど…

逃げるために明日からもPythonの勉強を頑張っていきます。

 

おやすみなさい。

 

追伸

大人が新しいことを学びたがる理由が分かってしまうお年頃になりました。

SNSとか動画を見るだけで時間が過ぎていた時のむなしさえげつない。

Python12日目 東工大の無料勉強サイトを発見

こんばんは。Python12日目、始めていきます。

 

Twitterをなにげなーく見ていたら、「東工大Pythonを勉強できる無料サイトを作っている」という情報が。

そんな便利なものがあるのか~!という驚きと、そろそろ基本文法が分からなくて困ることが増えてきたのでタイミングが良すぎる感動と、で涙が出そうです(出ない)

 

👇東工大Pythonお勉強用サイト

はじめに — Python早見帳 (chokkan.github.io)

 

本要らないじゃん…笑

と思ったりもしましたが、やってみないことには分からないのでとりあえずサイトを読んでみます。

でもPython1年生の絵柄は可愛いしPythonを触ってみるきっかけになったので感謝です。

 

新しく覚えたこと。

★For文

・For文はrange(b)と指定すると0~bまでになってしまう。特定の数字から始めたければrange(a,b)とする必要がある。

・変数のデータ型を定義するとき、整数なら最初にa=0とだけ書いておけばいい。(すごい!)

・range(a,b,c)と書くと、aからbまでc刻みで、繰り返しができる。

 

★比較演算

・等しい:==

・等しくない:!=

・「ブール値」:TrueまたはFalse

 

★in演算子

・n in (a,b,c,d)としたときに、nがa,b,c,dの集合に含まれないのでfalseを返す。trueかfalseが返り値。

 

「関数」のページに到達して眠気がそろそろ限界なので、本日はここまでにします。

週末の3連休が楽しみすぎる~

 

追伸

理系最高峰すごい