Learn_pd_and_dataframe

学校のデータ分析の授業でやっとpandasやdataframeの基礎を学んだのでまとめてきたいと思う。これでkaggleもできるようになると思うよ!! chapter 1 importing import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import sklearn as sl reading csv salary = pd.read_csv('salary.csv') dataframe meta operation # print first 5 rows df.head() # print first n rows df.head(n) # print shape print(df.shape) # print columns print(df.columns) # print info print(df.info()) converting dataframe to list or numpy # convert dataframe's columns to string list string_list = df.columns.values getting specific column game_name = df['game_name'] getting dummiy of specific column (prefix is optional) dummy_column = pd.get_dummies(df['specific_row'],prefix='pref') slice specific row and column # get slice of rows from 100 to 199 slieced = df.iloc[100:200,:] # get specific columns all_scores = ['Critic_Score', 'User_Score'] reg_sales_df = game_sales[all_scores] # get specific clumns like specified all_sales = game_sales.filter(like='Sales') # get specific rows and columns sample_info = eng_salary.loc[:11244,['Degree', 'Specialization', 'Salary']] chapter 2 (Filtering) filter by condition # get rows where Year_of_Release is 2016 filter = game_sales['Year_of_Release'] == 2016 year_of_2016 = game_sales[filter] # get rows which satisifes the multiple condition and print specific columns pub_is_Nintendo = game_sales['Publisher'] == 'Nintendo' year_is_85_to_95 = (game_sales['Year_of_Release'] >= 1985) &\ (game_sales['Year_of_Release'] <= 1995) Nintendo_85_to_95 = game_sales[year_is_85_to_95 & pub_is_Nintendo] print(Nintendo_85_to_95[['Name', 'Publisher', 'Year_of_Release']], end='\n\n') # same as above but in one line. sp_omit = 'information technology' cond1 = eng_salary['Specialization'] != sp_omit cond2 = eng_salary['English'] <= 400 cond = cond1 & cond2 output = eng_salary.loc[cond,['Specialization','English']] grouping (IMPORTANT) まずはgroupingがどんなことをするのかだけど、ある列について、同じものをまとめるって感じだな。そして、その列についてまあ、色々と操作をするわけです。例えば各出版社ごとの売上とかもかんたんに計算できるようになるってことです。これはクッソ便利ですよね??はい、マジで便利なんです。 ...

May 24, 2023 · 4 min · 829 words · Me

Openvpn_client_from_ubuntu

ubuntuからopenvpnサーバにつなぐときの設定方法 いや、 settings -> network -> openvpn で一発や!笑 デフォルトでopenVPNのサーバに接続はできるようになっているみたいだ。 ここでメモしておきたいのは、ubuntuでLayer 2 Tunnel Protocolを使ったVPNの設定方法だね。これはデフォルトの設定ではできなくなっていて、ソフトをインストールする必要があるんです。以下のコマンドで一発です。 sudo apt-get update sudo apt-get install network-manager-l2tp sudo apt-get install network-manager-l2tp-gnome あとは、書かれているとおりに設定すれば問題なしです。

May 24, 2023 · 1 min · 25 words · Me

Comments_on_the_design_of_web_api

web apiの設計という本をまとめる なぜ読もうと思ったか? 自分がIT企業にエンジニアとして就職するから。また、研究でデータベースを作っているが、そのAPIの設計に役立てられると思ったから。大学の図書館で借りた本だけど、一周してみて良本だったら自分で買おう。ということでさっさと読みましょう。 1章 APIとは何か?APIの設計はなぜ重要か?APIの設計は何を意味するのか?うーん、わかりきっていることですね。 No, a function is not an API (Application Programming Interface) in itself. A function is a self-contained block of code that performs a specific task or operation. It encapsulates a set of instructions that can be called and executed when needed. Functions can take input parameters and return values or perform actions without returning a value. On the other hand, an API refers to a collection of functions, protocols, and tools that allow software components to interact with each other. APIs define the interfaces and rules for communication between different software systems, enabling them to exchange data and execute specific operations. In essence, an API encompasses a set of functions or methods, along with the associated rules and protocols, that define how different software components can communicate and interact with each other. Functions themselves are building blocks within an API that provide specific functionality or perform specific tasks. と思って、じゃあライブラリはAPIだよね?って聞いたら、 ...

May 18, 2023 · 3 min · 601 words · Me

20230514win5

1レース目 4頭 (3頭) ヴェルとハイム:休養明け、確かに京都は得意そうな感じはする。しかし、休養明けっていうのがでかすぎる。過去、休養明けには全然買っていないイメージ。そうね、本当に休養明けはだめなイメージ?だったんだけど、そんなこともないか?場体重次第だな。明日、+-5に収まっていたら考える必要が出てくるかもしれない。 露ワンディシティー:まあ、ぶっちゃけ2章クラスから上がってきたばかりなんですわ。上がってきたときの2着は里のヘリオス。ぶっちゃけ里のヘリオスはザコ。そいつに0.1秒差で買っただけの露ワンディシティー、実は雑魚かもしれん。うん、シーザリオ母だしね。4歳だし、もう全盛期終わってるよ。うん、3諸クラスの一発目は3位だったんだけど、2位との差が2馬身差以上。これはぶっちゃけ雑魚ですわ。こいつは来ない。悪い。2諸クラスで2着になったと胃の1着が3諸クラスで活躍できていないのをいても、まあないのではないか?と思ってしまうのだが、どうだろう。 調教を見ても、最後の1ハロンで落としてしまっているイメージだな。正直。これはないかな、うん、キリでオッケーです!! 鈴鹿とおっぷばご:なるほd、切除したんだな。だからワンちゃんあると思っていらっしゃる。確かに、そう考えるとワンチャンあるんだわ、鈴鹿とっぷばご。 いや、調教を見たら、やっぱりしぇいリーンやグランディアにはかなわなそうです。ということで、ここはキリです。 しぇいリーン:逃げ。絶対に入れておきたい。こいつは最後まで逃げ粘って勝利って可能性、全然ある。 パーソナルはい:しぇいリーンと同じです。 ヴィあるーくす:こいつは時計がかかる馬場で力を発揮するタイプだと思う。1600はめちゃめちゃ走ってきているけど、1:33.5がベスト。正直これは微妙な数字だと思ってしまうね。いや、東京で1:32.4を出しているけど、まあ、場体重次第かな。あまり伸びるタイプでもないし、別に輸送が苦手だったわけでもないし。うん、京都には向かないと思うけど。どうだろう??あと、前走の旗手が1400がベストなイメージといっているが、本当にそんな感じがする。最後追い抜かれているしね。チョット挑戦する場所が違うのではないか?と思ってしまいます。キリだね。 トオヤリト生徒:こいつ、ちん子切ってから安定しやがった。それが前回の中山だったわけね。後は単純に主馬場巧者だわ、こいつ。うん、こいつの馬連とか、買ってもいいかもしれないね。うん、こいつの馬単を買うことにした。 4 > (1,3,6,8,10,11,12) で、行きたいと思います!!200円ずつかな。まあ遊びとしてもいいでしょう。 で、最後に確認するのは、ヴィあるーくすを入れるか。まあ今のところ入れる気はないです。はい。 入れません。結果、3当 (10,11,12) 2レース目 (2頭) クールミラボーが来ない理由は、初の関東遠征だから。以上。 リバートゥルーが来ない理由は、タイムが雑魚すぎるから。話にならん。めちゃめちゃスローなレースで買っているだけよ。 どんでん返しが来ない理由は、ダート代わりだから。おそらくダートもそんなに得意ではない。見た感じね。 ラップスターが来ない理由は、確かに上がり速いけど、不良馬場だったから。あと、輸送もそんなに得意そうじゃない。しかし、先行馬であるところはめちゃめちゃ魅力的。こいつは買ってもいいかもしかし、ゆてぃたむもウェイいくも選考なんだよなー。後勝ち上がった時の対戦相手が雑魚すぎる。キリ。 ということで、 うん、ここはウェイくざぼーどとゆてぃたむの二党で決定だな。 はい、この二党でまったく問題ない。 (2,6) 3レース目 新潟芝、1800m 6頭 (5頭) まずは、アンダープロット、はーランズハーツ、ソウルトレイン、の三党はちょっと話にならないので除外します。 グランスラムアスク:削除です。前回2章クラス買って、3章クラスに上がってkチアわけですが、マジで座濃い、話にならないレースでした。今回も無理でしょう。キリ。 いや、馬体重をみて、というのはありますが、こいつ、逃げ馬なんですよ。で、ワンチャンありそうなので、入れておきます。逃げ馬で痛い目に合っているので。はい。入れます。 差じぇす:京都や小倉など、最後にスピードに乗っていく感じのところはかなり得意なイメージしかし、新潟はだめだな。しかも3章クラスに上がっていきなり勝てるわけがなかろうとね。そんなに甘くはないのですよ。 襟おとろーぴお:こいつ、未勝利から3章クラスまで一気に来たね。前回の福島でいい感じの成績を残しているが、今回はどうだろうね。と思ったが、前回の福島ではトップハンデとなんと7キろも差があっての2着だからね。(笑)。今回はまた元に戻って56キロです。まあ、ないでしょうね。キリです。 うん、 2,6,8,9,11,12 6頭です。 この中から一番人気が低くなりそうなやつを一頭選んで削除。そいつの馬連を買いましょう。いいでしょうか? 後はもちろん場大樹。 ここまでで40通り。 4レース目 6頭 (2頭) 京都のダート1400。最後の、残り800mから600mまで2メートル下って、そのままスピードに乗ってゴールする感じ。雨予報だし、これはマジで差しが決まる。っていうのと、意外とパワーがないやつでも残る可能性がかなり高い。この2つを頭に入れておこう。ダートはパワー型が勝つイメージがあるが、今回はそうならない可能性があるということだ。つまりサンデーサイレンス系が勝つ可能性があるということだ。 ちゅうことで、まずは絶対にないと思われる、1,2,6,7,8,11,13を消しました。はい。 つぎ、 多賀野クリステル。こいつ、上がってきたね、3諸クラスから。で、こいつ、阪神とか中京で買ってるんだけど、こういうのは最後、パワーで押し粘る感じ。 京都は東京、新潟に近い。ということで、前回阪神で勝ち上がったこいつは、完全にキリなんですわ。 セキふうは、ダート良で走るイメージだな。逆に、多賀野クリステルは不良ダートの表が走るイメージがある。サンデーサイレンス系だしね。うん、積風波入れたほうがいいかも。 いまのところ、 (3,4,9,10,12,15,16)の7等を選んだけど、 ここから、馬体重を見て1頭を減らし、さらに、最もにんきがひくいやつをはずし、 5 race 1頭 (1でもいいかも) 反省 1レース目 2レース目 3レース目 4レース目 5レース目

May 10, 2023 · 1 min · 66 words · Me

Raspi_lustre

ラズパイでLustre、分散ファイルシステムを構築して、I/Oのバンド幅を爆上げしたいって話 まずはいきなり参考文献ですね。 GlusterFS んで、早速壁にぶち当たるわけですね。Lustreはbinaryが配布されているらしいんですが、x86用らしいんですよね。ということで、raspiで動かすためにはソースコードをビルドしないといけないんですね。 まあ、これだけ書いて終わりっていうの残念なので、分散ファイルシステムについて知っていることを書いていきたいと思います。 まず、ファイルシステムっていうのは、OSの機能で、ブロックデバイスの操作をするためのデバイスドライバをラッピングしてくれているOSの機能。デバイスドライバへのAPIを提供してくれているOSの機能。で、ファイルシステムがあるから、我々はOSにお願いするだけでいい感じにファイルを作れるし、どこにどのファイルがあるか、とかそういう管理もしなくていいのよね。ただね、ファイルシステムもただのプログラムに過ぎないんですわ。何が言いたいかというと、内部ではカチカチとデバイスドライバーを動かしているわけで。いや、何が言いたいかっていうと、1ファイルにつき1プロセスしか操作を許されないってことね。つまり、複数のプロセスが一気に一つのファイルに書き込むとか、そういうのは無理なわけよ。これまず大事なポイントね。だからね、書き込みたいデータがたくさんあってもsingule writingをするしかないんだよね。 はい、GPT先生に聞いてみた。 Is it impossible for multiple processes to write data to a same file simultaniously? In traditional file systems, it is generally not possible for multiple processes to write data simultaneously to the same file without coordination or synchronization mechanisms. Concurrent writes to the same file can lead to data corruption, inconsistencies, or conflicts. When multiple processes attempt to write to the same file simultaneously, several issues can arise: Data Corruption: Simultaneous writes from multiple processes can result in data corruption, where the written data becomes mixed or garbled. This can happen if the file system interleaves or merges the write operations from different processes in an uncontrolled manner. Inconsistent Data: If processes are writing to different parts of the same file simultaneously, it can lead to inconsistent data. For example, if two processes write different values to the same location within the file at the same time, the final content of that location becomes unpredictable. File Locking and Concurrency Control: File systems often employ locking mechanisms to control access to files and ensure data integrity. These locks allow processes to acquire exclusive or shared access to a file, preventing simultaneous writes by multiple processes. Without proper coordination, conflicts may arise, and processes may contend for file locks, leading to delays and reduced performance. To enable multiple processes to write data to the same file simultaneously, coordination mechanisms such as file locking, semaphores, or other synchronization techniques need to be employed. These mechanisms ensure that processes take turns or serialize their write operations to maintain data integrity and consistency. However, it's worth noting that some distributed file systems or specialized I/O middleware, like ADIOS, may provide mechanisms to support parallel or concurrent writes to a file. These systems typically implement internal coordination and synchronization mechanisms to manage concurrent access safely. In such cases, the middleware handles the coordination and ensures data integrity, allowing multiple processes to write to the same file efficiently. しかし一つのファイルに同時書き込みを許可しているふぃあるシステムもある。XFSは一つのファイルに同時書き込みを許可しているらしいのだが。そんなことできるのか??? ...

May 9, 2023 · 8 min · 1583 words · Me

Openvpn_multiple_client

一つの証明書を複数のクライアントで使い、同時接続を可能にする方法 基本的にクライアント証明書は一つのクライアントにつき一つ作るのがいいとされている。しかし、新しく作るのがめんどいときもある。iphoneとsurfaceに同じクライアント証明書が入っているのだが、この二つを同時接続しようとすると、先に接続されていた方が追い出される形になる。 openvpnのログを見てみるとこんな感じである。 Thu Apr 27 12:37:15 2023 MULTI: new connection by client 'hogehoge' will cause previous active sessions by this client to be dropped. Remember to use the --duplicate-cn option if you want multiple clients using the same certificate or username to concurrently connect. chatGPTさんに解決方法を聞きました。 Yes, you can add the '--duplicate-cn' option to your OpenVPN server configuration file. To do this, follow these steps: Open your OpenVPN server configuration file (usually named 'server.conf') using a text editor. Add the line 'duplicate-cn' to the file, without the quotes. Save the file and restart the OpenVPN server for the changes to take effect. Here's an example of what the relevant section of the configuration file might look like: # Allow multiple sessions per client username or certificate duplicate-cn 解決です。chatGPT先生すごすぎ!!ググレカス!!はいずれ死語になるのでしょうか??? ...

April 27, 2023 · 1 min · 128 words · Me

Haruten

タイトルホルダーが来ない理由を言語化してみた。 今週末は春の天皇賞です。今年もいい馬がそろいましたが、確実に過剰人気になる馬が一頭いる。タイトルホルダーですね。 はい、まずはタイトルホルダーがどういう馬なのか、を軽く説明したいと思います。ズバリ、スタミナがめちゃめちゃある先行逃げ切りです。長くいい足を使うとかっていうのはできない。まじで。ピッチがめっちゃ早いのよね。で、最後の急な坂とかも頑張って粘れる感じ。 で、先行逃げ切りに合う競馬場は、最後の直線が短く、急な坂が待っている中山とか阪神の内とかなんだよね。 今までタイホが買ってきた舞台とかを見ると全部それ。まず、菊花賞。阪神3000mの内。そして、宝図記念。阪神2200mの内。そして去年の天皇賞春。阪神3200の外からの最後内回り。日経賞も中山。全部タイトルホルダーのための舞台だったんだよね。逆に負けたやつを考えてみよう。ダービー。うん、よーいどんだね。 ちなみに、前回の日経賞、道悪のやつね、あれ、どう考えてもタイホ有利な展開だから、勝って当たり前なのよね。2着以下の泥のかぶり方見たやろ。それはそうやわ、ってかんじなの。 さらに、多くの素人は思うんだよ。去年の天皇賞春タイトルホルダー買ってるし、今年も余裕じゃね???ってね。阪神競馬場から京都競馬場に変わったってことも知らずにね。 マジな話、アスクには負けるね。ディープ産駒って足長いもん。スラっとしててかっこいいよね。で、京都最後下りだもん。その長い足を使ってビューンといってほしい。そう、イメージ的には小倉競馬場に近いね。最後、ビューンってめちゃめちゃ伸びてくる感じ。そうなると、ジャスティンパレスとアスクビクターモアに軍配が上がるね。後はボルドぐふーしゅだね。まじで。ただ、ぼるディーもどちらかというとタフなのがあっている気がするのよね。中山とかそっち系。あとね、ジャスティンは輸送が苦手なのよね。これ大事。ジャスティンは栗東だからね。いや、もうジャスティンしかない気がする。ジャスティン、アスク、ぼるディー、だね。ただね、アスクは美穂ってのは気になるね。 まあ、これはうまいレースになる。 京都でやってた時の菊花賞馬にはコントレイルとかがいる。タイトルホルダーが菊花用とれたのは間違いなく、阪神内だったから。時も味方したって感じよ。宝塚では買いたいが、京都の春はきり!!!お疲れ!!

April 25, 2023 · 1 min · 10 words · Me

Ngrock and remote.it explained

ngrock とはなにか?もう調べるの面倒くさいんでchatgp先生の回答をそのまま持ててこようと思います。 Ngrok is a popular tool that allows developers to expose a web server running on their local machine to the internet. It creates a secure tunnel from a public endpoint to a locally running web service. This can be useful for testing webhooks, APIs, and other web services that require a publicly accessible endpoint. Ngrok provides a public URL that can be used to access the local web server, which eliminates the need for a dedicated server or a domain name to test the web service. Ngrok can be downloaded for free and is available for Windows, Mac, and Linux. 基本的にローカル環境で開発しているアプリをインターネットに公開することはできないんだよね。たとえ、グローバルipが割り当てられているマシンでも、localhost:3000とかで動いています、ってなると外部の3000にアクセスしてもだめなわけだ。 このローカルの3000をngrockっていうアプリを使って、ngrockのサーバを経由して外に見せる方法がこれなわけだね。 おそらくこれもグローバルipを外部にさらさなくても見られるようにするツールだと思うんだよね。 ...

April 19, 2023 · 2 min · 293 words · Me

NodeJs最新版エンジンのインストール方法(tsはじめました)

そうだ、typescriptはじめよう 可読性、保守性を高めるためにはやっぱりnode.jsではなく、typescriptです!!どうやら、tsはa part of node.jsらしい? (そんなことないかもです。ただ単にnpmで入れられるだけ?)です。インストールの手順、使い方、その他、重要な点をまとめます。 node.jsのインストール方法 ref1 を参考に最新のnode.jsをインストール出来ます。まあ、ここでもまとめておきたいと思いますが。 aptでnodejsとnpmを入れる $ sudo apt update $ sudo apt install nodejs npm $ sudo node -v npm install で最新のnode.jsを入れる $ sudo npm install n -g 古いnode.jsを削除する $ sudo n stable $ sudo apt purge -y nodejs npm $ exec $SHELL -l typescriptのインストール方法 上のを参考にnode.jsがインストール可能ですね。んで、typescriptはなんとnpmで入れるんですよね。これ驚き。しかし、コンパイラはちゃんとbinaryなんですよね。packageとかではなく。これ面白い。 はい、refを参考にnpmからtypescriptをインストールして、コンパイラへのパスを通します。 $ mkdir sample $ cd sample $ npm init $ npm install typescript $ echo export PATH=\$PATH:`pwd`/node_modules/.bin >> ~/.bashrc $ source ~/.bashrc $ tsc --version とりあえずチュートリアルをやろう チュートリアルがかなり充実している。ビビるね。Reactがなぜいいのか、っていう部分も軽く書かれているから、参考にした方がいいですね。 ...

February 27, 2023 · 1 min · 115 words · Me

Comments_on_how_linux_works

linuxを制すものはITを制す とはよく言ったものだ。 将来の夢はlinuxカーネルを理解することである自分ですが、まあ、そこへのかけ橋が必要ということで、「linuxの仕組み」を読むわけですね。裏表紙を見るだけで良本感が出ているこの本、さっそく読んでいきましょう ちなみに、筑波大学のこの人の授業もめっちゃためになります。 ref 1章:Linuxの概要 プログラムとは何か、プロセスとは何かを簡単に説明した後、カーネルの必要性について話しています。 これはかなり重要だけど、カーネルモードとユーザモードはcpuによって提供されている機能なんですね。カーネルモードで動いているプログラムは何の制限もないのに対して、ユーザモードで動いているプログラムには特定の命令を実行できなくする等、様々な制限がかかるんですね。 で、linuxの場合は、カーネルだけがカーネルモードで動作しています。つまり、プロセスはユーザモードで動いている、ということですね。だから、プロセスはカーネルを通じてデバイスにアクセスするのですが、この時にカーネルに操作をお願いする命令のことを「システムコール」というんですね。そうなんです、システムコールです。 カーネルの助けがないと実行できない処理をカーネルにお願いするんです。具体的には、nicを介した通信とかはそうですね。あとは、デバイスへのアクセス。プロセスの生成、削除。ファイルシステム操作。メモリ確保、解法。など。 システムコールが発行されると、cpuにおいて例外というイベントが発生するんですね。で、これをきっかけにcpuのモードがユーザモードからカーネルモードに遷移します。で、システムコールが終了すると再びユーザモードに戻ってプロセスが動くって感じですね。 で、straceコマンドってのがプログラムの中で発行されるシステムコール一覧を出してくれるんだよね。 strace python だけでもシステムコールがたくさん呼び出されることからも、pythonがインタープリタ言語であることがわかると思う。 前に研究室のサーバでwコマンドがハングしてしまう問題が起こったよね。そういう時は strace w とかってやると、wコマンド実行中のシステムコールがみられて、どこでハングしているのかとかがわかるわけですね。 こないだ調べた時は、特定のプロセスのプロセス情報 (/proc/<pid>/cmdlineとか) を閲覧しようとするとハングしてしまっていました。strace wとかするとreadシステムコールがハングするのがわかるはず。 ただ、なぜそうなってしまうのかはわかっていません…調べるとcgroupsによるメモリ制限と関係がありそうな情報が出てきましたが、まだ調査していません。 sudo yum install -y sysstat つぎのコマンドでsysstatを起動しましょう sudo systemctl start sysstat.service sarコマンドで遊びましょう。 sar -P 0 1 1 ちなみに、このコマンドの意味は、論理CPU0の(-P 0)のデータを1秒ごとに1回だけ収集しましょう。てこと。 sar -P 0 1 4 をやると次のような結果が出てくるよ。 Linux 5.15.32-v8+ (zeta) 09/02/23 _aarch64_ (4 CPU) 16:08:49 CPU %user %nice %system %iowait %steal %idle 16:08:50 0 0.00 0.00 0.00 0.00 0.00 100.00 16:08:51 0 0.00 0.00 0.00 0.00 0.00 100.00 16:08:52 0 0.00 0.00 0.00 0.00 0.00 100.00 16:08:53 0 0.00 0.00 0.00 0.00 0.00 100.00 Average: 0 0.00 0.00 0.00 0.00 0.00 100.00 この表の見方は、CPU 0がユーザモードで動作した時間の割合(%userと%nicdの和)、カーネルモードで動作した時間の割合(%system)、何もしていない時間の割合(%idle)って感じだね。 ...

February 9, 2023 · 7 min · 1335 words · Me