Pythonデータの分析と視覚化
Pandasは、データサイエンスと分析で最も人気のあるPythonライブラリの1つです。 Pandasライブラリは、データの操作、分析、およびクリーニングに使用されます。これは、純粋にCで記述された低レベルのNumPyを高レベルで抽象化したものです。このセクションでは、アナリストまたはデータサイエンティストとして知っておく必要のある最も重要な(最も頻繁に使用される)ことをいくつか取り上げます。
ライブラリのインストール
pipを使用して必要なライブラリをインストールできます。コマンド端末で以下のコマンドを実行するだけです:
pip intall pandas
DataFrameとシリーズ
まず、パンダの2つの主要な基本データ構造を理解する必要があります。 DataFrameとシリーズ。パンダをマスターするには、これら2つのデータ構造をしっかりと理解する必要があります。
シリーズ
Seriesは、Pythonの組み込み型リストに似ているオブジェクトですが、各要素またはインデックスにラベルが関連付けられているため、これとは異なります。
>>>パンダをpdとしてインポート>>>my_series=pd.Series([12、24、36、48、60、72、84])>>> my_series0 121 242 363 484 605 726 84dtype:int64
上記の出力では、「インデックス」が左側にあり、「値」が右側にあります。また、各Seriesオブジェクトにはデータ型(dtype)があり、この場合はint64です。
インデックス番号で要素を取得できます:
>>> my_series [6] 84
インデックス(ラベル)を明示的に提供するには、次を使用します:
>>> my_series =pd.Series([12、24、36、48、60、72、84]、index =['ind0'、'ind1'、'ind2'、'ind3'、'ind4' 、'ind5'、'ind6'])>>> my_seriesind0 12ind1 24ind2 36ind3 48ind4 60ind5 72ind6 84dtype:int64
また、インデックスによっていくつかの要素を取得したり、グループを割り当てたりするのは非常に簡単です。
>>> my_series [['ind0'、'ind3'、'ind6']] ind0 12ind3 48ind6 84dtype:int64>>> my_series [['ind0'、'ind3'、'ind6']] =36>>> my_seriesind0 36ind1 24ind2 36ind3 36ind4 60ind5 72ind6 36dtype:int64
フィルタリングと数学演算も簡単です:
>>> my_series [my_series> 24] ind0 36ind2 36ind3 36ind4 60ind5 72ind6 36dtype:int64>>> my_series [my_series <24] * 2Series([]、dtype:int64)>>> my_seriesind0 36ind1 24ind2 36ind3 36ind4 60ind5 72ind6 36dtype:int64>>>
以下は、シリーズの他の一般的な操作です。
>>>#辞書として機能>>> my_series1 =pd.Series({'a':9、'b':18、'c':27、'd':36})>>> my_series1a 9b 18c 27d 36dtype:int64>>>#ラベル属性>>> my_series1.name='数字'>>>my_series1.index.name='文字'>>>my_series1lettersa 9b 18c 27d 36名前:数字、dtype:int64>>> #chaning Index>>> my_series1.index =['w'、'x'、'y'、'z']>>> my_series1w 9x 18y 27z 36Name:Numbers、dtype:int64>>>
DataFrame
DataFrameは、行と列が含まれているため、テーブルのように機能します。 DataFrameの各列はSeriesオブジェクトであり、行はSeries内の要素で構成されています。
DataFrameは、組み込みのPythondictを使用して構築できます。
>>> df =pd.DataFrame({'Country':['China'、'India'、'Indonesia'、'Pakistan']、'Population':[1420062022、1368737513、269536482、204596442]、 'エリア':[9388211、2973190、1811570、770880]})>>>dfエリア国人口09388211中国142006202221973190インド136873751321811570インドネシア2695364823770880パキスタン204596442>>>df['国']0中国1インド2インドネシア3パキスタン名前:国、 dtype:object>>> df.columnsIndex(['Area'、'Country'、'Population']、dtype ='object')>>> df.indexRangeIndex(start =0、stop =4、step =1)>>>
要素へのアクセス
行インデックスを明示的に提供する方法はいくつかあります。
>>> df =pd.DataFrame({'Country':['China'、'India'、'Indonesia'、'Pakistan']、'Population':[1420062022、1368737513、269536482、204596442]、 ' Landarea':[9388211、2973190、1811570、770880]}、index =['CHA'、' IND'、' IDO'、' PAK'])>>> dfCountry Landarea PopulationCHA China 9388211 1420062022IND India 2973190 1368737513IDO Indonesia1811570269536482PAKパキスタン770880 204596442>>> df.index =['CHI'、'IND'、'IDO'、'PAK']>>> df.index.name ='Country Code'>>> dfCountry Landarea PopulationCountry CodeCHI China 9388211 1420062022IND India 29731901368737513IDOインドネシア1811570269536482PAKパキスタン770880204596442>>> df['国']国コードCHI中国INDインドIDOインドネシアPAKパキスタン名前:国、dtype:オブジェクト
インデックスを使用した行アクセスは、いくつかの方法で実行できます
- .locの使用とインデックスラベルの提供
- .ilocの使用とインデックス番号の提供
>>> df.loc ['IND'] Country IndiaLandarea 2973190Population 1368737513Name:IND、dtype:object>>> df.iloc [1] Country IndiaLandarea 2973190Population 1368737513Name:IND、dtype:object>>>>>> df .loc [['CHI'、'IND']、'Population']国コードCHI1420062022IND 1368737513名前:Population、dtype:int64
ファイルの読み取りと書き込み
Pandasは、CSV、XML、HTML、Excel、SQL、JSONなどの多くの一般的なファイル形式をサポートしています。最も一般的にはCSVファイル形式が使用されます。
csvファイルを読み取るには、次を実行します:
>>> df =pd.read_csv('GDP.csv'、sep ='、')
名前付き引数sepは、GDP.csvというCSVファイルの区切り文字を指します。
集約とグループ化
パンダのデータをグループ化するために、.groupbyメソッドを使用できます。タイタニックのデータセットを使用したパンダでの集計とグループ化の使用を示すために、以下のリンクから同じものを見つけることができます:
https://yadi.sk/d/TfhJdE2k3EyALt
>>> titanic_df =pd.read_csv('titanic.csv')>>> print(titanic_df.head())PassengerID Name PClass Age \ 0 1 Allen、Miss Elisabeth Walton 1st 29.001 2 Allison、Miss Helen Loraine1st 2.002 3アリソン、ハドソン氏ジョシュア・クレイトン1st 30.003 4アリソン、ハドソン夫人JC(Bessie Waldo Daniels)1st 25.004 5アリソン、マスターハドソントレバー1st0.92セックスサバイバルSexCode0メス111メス012オス003メス014オス10>>>
何人の乗客(女性と男性)が生き残ったのか、何人が生き残らなかったのかを計算してみましょう。.groupbyを使用します
>>> print(titanic_df.groupby(['Sex'、'Survived'])['PassengerID']。count())Sex Survivedfemale 0154 1 308male 0709 1142名前:PassengerID、dtype:int64 プレ>キャビンクラスに基づく上記のデータ:
>>> print(titanic_df.groupby(['PClass'、'Survived'])['PassengerID']。count())PClass Survived * 0 11st 0129 1 1932nd 0160 1 1193rd 0 573 1138名前: PassengerID、dtype:int64パンダを使用した時系列分析
パンダは時系列データを分析するために作成されました。説明のために、私はアマゾンの5年間の株価を使用しました。以下のリンクからダウンロードできます
https://finance.yahoo.com/quote/AMZN/history?period1=1397413800&period2=1555180200&interval=1mo&filter=history&frequency=1mo
>>>パンダをpdとしてインポート>>>amzn_df=pd.read_csv('AMZN.csv'、index_col ='Date'、parse_dates =True)>>> amzn_df =amzn_df.sort_index()>>> print( amzn_df.info())DatetimeIndex:62エントリ、2014-04-01から2019-04-12データ列(合計6列):Open 62 non-null objectHigh 62 non- null objectLow 62 non-null objectClose 62 non-null objectAdj Close 62 non-null objectVolume 62 non-null objectdtypes:object(6)memory使用量:1.9+ KBNone 上記では、DatetimeIndex by Date列を使用してDataFRameを作成し、それを並べ替えています。
そして、平均終値は、
>>> amzn_df.loc ['2015-04'、'Close']。mean()421.779999視覚化
matplotlibライブラリを使用してパンダを視覚化できます。アマゾンの株価履歴データセットを取得して、グラフ上で特定の期間の価格変動を調べてみましょう。
>>> import matplotlib.pyplot as plt>>> df =pd.read_csv('AMZN.csv'、index_col ='Date'、parse_dates =True)>>> new_df =df.loc ['2014-06 ':' 2018-08'、[' Close']]>>> new_df =new_df.astype(float)>>> new_df.plot()>>>plt。 show()
-
Pythonでのデータ分析と視覚化?
Pythonは、主にnumpy、pandas、matplotlib、seabornなどのデータ分析と視覚化のための多数のライブラリを提供します。このセクションでは、numpyの上に構築されたオープンソースライブラリであるデータ分析と視覚化のためのpandasライブラリについて説明します。 これにより、迅速な分析とデータのクリーニングと準備を行うことができます。Pandasには、以下で説明する多数の組み込みの視覚化機能も用意されています。 インストール パンダをインストールするには、ターミナルで以下のコマンドを実行します- pipinstall pandas Orweにはanacondaが
-
Pythonでの探索的データ分析
データ分析の場合、探索的データ分析(EDA)を最初のステップにする必要があります。探索的データ分析は、次のことに役立ちます- データセットへの洞察を与えるため。 基礎となる構造を理解します。 重要なパラメータとそれらの間にある関係を抽出します。 基礎となる仮定をテストします。 サンプルデータセットを使用したEDAの理解 Pythonを使用してEDAを理解するために、任意のWebサイトから直接またはローカルディスクからサンプルデータを取得できます。ワイン品質データセットの赤い変種が公開されているUCIMachineLearning Repositoryからサンプルデ