Python三剣客のPandas庫(一)


Pandasライブラリはデータ分析の三剣客の一人(他の二つはNumpyライブラリ、Matplotlibライブラリ)であり、Pythonの核心のデータ分析ライブラリである.高速で柔軟で明確なデータ構造を提供し、さまざまなタイプのデータを簡単に、直感的に、迅速に処理できます.
1.Pandasライブラリのインストール
システム検索ボックスを開きます(ショートカットキー:win+R)->cmdを入力し、「OK」をクリックしてコマンドボックスに入ります->コードを入力してpandasライブラリをインストールします
pip install Pandas

2.Pandasに入る
Pandasには2つの重要なオブジェクトとデータ構造があります.
次元#ジゲン#
名前
説明
1
Series
ラベル付き、1 D同性配列構造
2
DataFrame
ラベル付き、サイズ可変、2 D配列、2 D異機種表
2.1 Pandasライブラリのインポート
import Pandas as pd #  Pandas ,       pd

2.2 Series構造の作成
data=[1,"B",3,"D",5,6,"G",8,9]
s1=pd.Series(data)
print(s1)
0    1
1    B
2    3
3    D
4    5
5    6
6    G
7    8
8    9
dtype: object

インデックスが指定する場合、Seriesオブジェクトの作成時に整数インデックスが自動的に生成されることがわかる.デフォルト値は0から長さを1に減らします.では、インデックスは私たちのニーズに合わせて手動で設定できますか?もちろんいいです.
inlst=[11,12,13,14,15,16,17,18,19] #           
inlst1=[" "," "," "," "," "," "," "," "," "]#           
s2=pd.Series(data,index=inlst)
s3=pd.Series(data,index=inlst1)
print(s2)
print("."*30+"     1 "+"."*30)
print(s3)
11    1
12    B
13    3
14    D
15    5
16    6
17    G
18    8
19    9
dtype: object
..............................     1 ..............................
     1
     B
     3
     D
     5
     6
     G
     8
     9
dtype: object

出力結果から,従来自動作成されていた数値型インデックス(0−8)が,(11−19)と(「陳」,「先」,「生」,「学」,「代」,「コード」,「の」,「博」,「客」)に順番に置き換えられて最初のSeriesオブジェクトが作成された後,物流がインデックスを設定するかどうか,対応するインデックス生成があるが,インデックスは何の役に立つのだろうか.インデックスは、Seriesオブジェクトのデータを任意に取得することができる.では、インデックスはどのように使用しますか?位置インデックスの正の整数は0から始まり、左から右へ順に進む.[0]はSeriesの1番目の数を表し、[1]は2番目の数を表し、順に類推する.負の整数は-1から右から左へ順次進む、[-1]はSeriesの逆数の1番目、[-5]は逆数の5番目を表す.
import pandas as pd
ss=pd.Series([100,95,88,97,99,86],index=["  ","  ","  ","  ","  ","  "])
print("     1  ,    1 " , ss[0]) #                

print("     1  ,    1 " , ss[-1]) #                

print("     4  " , ss[3]) #                

print("     4  " , ss[-4]) #                
     1  ,    1  100

     1  ,    1  86

     4   97

     4   88

タグによるインデックス値の取得
import pandas as pd
ss=pd.Series([100,95,88,97,99,86],index=["  ","  ","  ","  ","  ","  "])
print("    '  '    " , ss["  "]) #           
print("."*30+"     1 "+"."*30)
print( ss[["  ","  "]]) #           
    '  '     95
..............................     1 ..............................
      95
      88
dtype: int64

位置インデックスとタグインデックスでインデックス値を取得するほか、スライスでインデックス値を取得することもできる.スライスはラベルスライスであるも位置スライスであってもよい.
#           
import pandas as pd
ss=pd.Series([100,95,88,97,99,86],index=["  ","  ","  ","  ","  ","  "])
#           
print("            :",ss["  ":"  "])
print("."*30+"     1 "+"."*30)
print("                     :",ss["  ":"  "])
print("."*50+"     2 "+"."*50)
#           
print("       ")
print(
'''
Series[star:end:step]
star:    ,  ,     0;
                    ,[0]   1 ,[1]     .
                    ,[-1]   1 ,[-2]   2 ,    
end:    ,   ,     len(Series)  
                   ,[0]   1 ,[1]     .
                   ,[-1]   1 ,[-2]   2 ,    
step:  ,   ,      ,   ,      ,      1,     0 

         ,               
         ,               

                (     )
'''
     )

print(ss[-1:-4:-1])
print("."*30+"     1 "+"."*30)
print(ss[6:-4:-1])
print("."*30+"     1 "+"."*30)
print(ss[3::])
print("."*30+"     1 "+"."*30)
print(ss[3::1])
print("."*30+"     1 "+"."*30)
print(ss[-1:2:-1])
            :       95
      88
      97
dtype: int64
..............................     1 ..............................
                     : Series([], dtype: int64)
..................................................     2 ..................................................
       

Series[star:end:step]
star:    ,  ,     0;
                    ,[0]   1 ,[1]     .
                    ,[-1]   1 ,[-2]   2 ,    
end:    ,   ,     len(Series)  
                   ,[0]   1 ,[1]     .
                   ,[-1]   1 ,[-2]   2 ,    
step:  ,   ,      ,   ,      ,      1,     0 

         ,               
         ,               

                (     )

      86
      99
      97
dtype: int64
..............................     1 ..............................
      86
      99
      97
dtype: int64
..............................     1 ..............................
      97
      99
      86
dtype: int64
..............................     1 ..............................
      97
      99
      86
dtype: int64
..............................     1 ..............................
      86
      99
      97
dtype: int64

Seriesのインデックスと値を取得するには、eriesオブジェクトのindexメソッドとValueメソッドを使用することができる.
#  Series     
import pandas as pd
ss=pd.Series([100,95,88,97,99,86],index=["  ","  ","  ","  ","  ","  "])
print("   :",ss.index)
print("    :",ss.values)
   : Index(['  ', '  ', '  ', '  ', '  ', '  '], dtype='object')
    : [100  95  88  97  99  86]

2.3 DataFrameオブジェクトの作成
DataFrameはPandasライブラリのデータ構造である、複数種類の列からなる2次元テーブルデータ構造であり、Excel、SQLまたはSeriesオブジェクトからなる辞書に類似する.DataFrameテーブルのデータを処理する際、indexを行、columnを列として理解することで、より直感的に理解しやすい.DataFrameオブジェクトを作成するには、通常の方法で作成するも辞書で作成するもよい.
import pandas as pd
#               
pd.set_option('display.unicode.east_asian_width',True)
data=[[105,115,120],[106,107,119],[110,111,112],[109,104,114],[108,98,118]]
index=[0,1,2,3,4]
columns=["  ","  ","  "]
#  DataFrame  
#pandas.DateFrame(data,index,columns,dtype,copy)
#    :
#    data:  ,nadrray  ,series  ,  ,   .
#    index:     ,    
#    columns:     ,    
#    dtype:          , Python         ,    :
#            Pandas    |Python    
#            object|str
#            int64|int
#            float64|float
#            bool|bool
#            datetime64|datetime64[ns]
#            timedelta[ns]|NA
#            category|NA
#    copy:      
#    DataFrame  
df=pd.DataFrame(data=data,index=index,columns=columns)
print(df)
print("."*30+"     1 "+"."*30)
#      DataFrame  
#pandas.DateFrame({dickey1:dicvalue1,dickey2:dicvalue2,dickey3:dicvalue3})
df1=pd.DataFrame({
     "  ":[105,106,110,109,108],"  ":[115,107,111,104,98],"  ":[120,119,112,114,118]})
print(df1)
print("."*30+"     1 "+"."*30)
#  #DataFrame      
for col in df.columns:
    ss=df[col]
    print(ss)
          
0   105   115   120
1   106   107   119
2   110   111   112
3   109   104   114
4   108    98   118
..............................     1 ..............................
             
0   105   115   120
1   106   107   119
2   110   111   112
3   109   104   114
4   108    98   118
..............................     1 ..............................
0    105
1    106
2    110
3    109
4    108
Name:   , dtype: int64
0    115
1    107
2    111
3    104
4     98
Name:   , dtype: int64
0    120
1    119
2    112
3    114
4    118
Name:   , dtype: int64

DataFrameの重要な属性
ツールバーの
説明
例を挙げる
values
すべての要素を表示
df.values
index
すべての行名の表示、行名の名前の変更
df.indexdf.index=[1,2,3,4,5]
columns
すべての列名の表示、列名の変更
df.columnsdf.columns=[[剛ちゃん]、[強ちゃん]、[明ちゃん]
T
行列データ変換
df.T
head
前のn変調データを表示します.デフォルトは5つです.
df.head() df.head(20)
tail
表示後n個のデータ、デフォルト5個
df.tail() df.tail(20)
shape
行数と列数を表示し、[0]は行数を表し、[1]は列数を表す
df.shape df.shape[0] df.shape[1]
DataFrameの重要な関数
ツールバーの
説明
例を挙げる
describe
各列の統計要約、DataFrameタイプの表示
df.describe()
count
各カラムのNull以外の値を返す個数
df.count()
sum
各列の和を返します.戻り値を計算できません.
df.sum()
man|min
各カラムの最大(小)値を返します.
df.max |df.min
argmax|argmin
最大値(小)の自動インデックス位置を返します.
df.argmax()|df.argmin()df["魯班"][df["小徳"].Argmax()]df[「アーサー」][df[「徳ちゃん」].argmin()]
idxmax|idxmin
最大(小)の値があるカスタムインデックスの場所を返します.
df.dixmax()|df.dixmin()
mean
各カラムの平均値を返します
df.mean()
median
各カラムの中央値(中央値)を返します.
df.median()
var
各カラムの分散分散を返して、単一のランダム変数の離散度(不連続度)を測定します.
df.var()
std
各列の標準偏差を返します(標準偏差は分散の平方根で、データセットの離散度を反映します).
df.std()
isnull
dfの空の値をチェックして、空の値はTrueを返して、さもなくばFlaseを返して、ブール型を返します
df.isnull()
notnull
dfの空の値をチェックします.空でない値はTrueで、そうでない場合はFlaseで、ブール型を返します.
df.notnull()
2.4外部からのデータのインポート
何も言わないで、まず時計を1枚ください.
方法
説明
read_excel
ExcelテーブルをDataFrameに読み込む
read_csv()
CSV(カンマ区切り)ファイルをDataFrameに読み込む
read_sql()
SQLクエリーまたはデータベースのテーブルをDataFrameに読み込む
read_sql_table()
SQLデータベースのテーブルをDataFameに読み込む
read_sql_query()
SQLクエリーをDataFrameに読み込む
Excelfile.parser()
ExcelテーブルをDataFrameに読み込む
read_plckle()
plckleファイルの読み込み
read_table()
セパレータ付きの通常ファイルをDataFrameに読み込む
read_fwf()
固定幅の書式設定された行標をDataFrameに読み込む
read_cllpboard()
クリップボードを読み取りread_に渡すtable
read_json
JSON文字列をPandasオブジェクトに変換
read_html
HTMLテーブルをDataFrameオブジェクトに読み込む
read_hdf
haf 5ファイルの読み込み
Excelをインポートしてpandasを書きます.read_Excel(ph,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeese=False,dtype=None,skiprows=None,skipfooter=None)パラメータ説明:ph:xlsまたはxlsxファイルパスまたはクラスファイルオブジェクトsheet_name:MORENZHI WEI 0

説明
sheet_name=0[デフォルト]
最初のシートのデータをDataFrameとする
sheet_name=1
2番目のSheetページのデータをDataFrameとする
sheet_name=“Sheet1”
「Sheet 1」という名前のSheetページのデータをDataFrameとする
sheet_name=[0,1,“Sheet3”
1つ目、2つ目と名前が「Sheet 1」のSheetページのデータをDataFrameとする
    :
        ,                 .
../ :                 .
  ./   :            
  /  :           
     :
          ,                       .

header:カラム名としての行を指定し、デフォルト値は0、すなわち第1の動作列名をとる.データはカラム名以外のデータである.header=Noneは、データにカラム名が含まれていないことを示す.names:デフォルト値None、使用するカラム名リストindex_col:カラムをインデックス列として指定します.デフォルトはNoneです.インデックス0は、DataFrameの行ラベルです.usecols:int、listまたは文字列、デフォルト値はNoneです.usecols=Noneは、すべての列を解析するusecolsをintとし、最後の列を解析するusecolsをlistリストとし、解析リストのリスト内の列をusecolsを文字列とし、Excelのアルファベットと列をカンマで分割してリストを返すことを示します.範囲には、A:FはA列からF列までのsqueeze:ブール値を表し、デフォルト値はFlaseであり、解析されたデータが1列しかない場合はSeriesオブジェクトを返します.dtype:カラムのデータ型名または辞書で、デフォルトはNoneです.例えば{"A":np.float 64,"B":np.int 64}skiprows:指定行数のデータを省略する、1行目から開始する.skipfooter:指定行数のデータを省略する、末尾数の行から開始する.
初めてpandasを使用してExcelテーブルをインポート
import pandas as pd
#               
pd.set_option("display.unicode.east_asian_width",True)
df=pd.read_excel('order_data.xlsx')
print(df.head())
    id                               
0  p1047                    29.9          19
1  p4429                     9.9           3
2  p2893                    98.9          60
3  p1898                    28.9          17
4   p979                    39.9          18

ワークブックの2枚目のテーブル、注文書をインポートします.
#          Sheet 
import pandas as pd
#               
pd.set_option("display.unicode.east_asian_width",True)
df=pd.read_excel('order_data.xlsx',sheet_name=1)
#  df=pd.read_excel('order_data.xlsx',sheet_name="   ")
print(df.head())
  ID      ID      ID                                           ID  \
0  p1047       1   10221  2017-01-01 00:00:00  2017-01-02 00:00:00    sale003   
1  p1614       2   10706  2017-01-01 00:00:00  2017-01-10 00:00:00    sale007   
2  p1614       3   10420  2017-01-01 00:00:00  2017-01-11 00:00:00    sale001   
3  p1898       4   10372  2017-01-01 00:00:00  2017-01-04 00:00:00    sale003   
4  p1898       5   10250  2017-01-01 00:00:00  2017-01-07 00:00:00    sale003   

                                                          \
0   10.90   1.0     1         0             2    29.9             1          
1  249.50   1.0     5         0             1   499.5             9          
2   29.92   0.8     1         0             1    99.9            10          
3   12.24   0.8     2         0             2    57.8             3          
4    0.34   0.6     1         0             1    28.9             6          

                          
0              29.9          19  
1            99.9          50  
2            99.9          50  
3              28.9          17  
4              28.9          17  

ここで、注文書の注文IDを行インデックスに作成します.
import pandas as pd
#               
pd.set_option("display.unicode.east_asian_width",True)
df=pd.read_excel('order_data.xlsx',sheet_name=1,index_col=1)
#df=pd.read_excel('order_data.xlsx',sheet_name="   ",index_col="  ID")
print(df.head())
         ID    ID                                            ID  \
  ID                                                                       
1       p1047   10221  2017-01-01 00:00:00  2017-01-02 00:00:00    sale003   
2       p1614   10706  2017-01-01 00:00:00  2017-01-10 00:00:00    sale007   
3       p1614   10420  2017-01-01 00:00:00  2017-01-11 00:00:00    sale001   
4       p1898   10372  2017-01-01 00:00:00  2017-01-04 00:00:00    sale003   
5       p1898   10250  2017-01-01 00:00:00  2017-01-07 00:00:00    sale003   

                                                           \
  ID                                                                     
1        10.90   1.0     1         0             2    29.9             1   
2       249.50   1.0     5         0             1   499.5             9   
3        29.92   0.8     1         0             1    99.9            10   
4        12.24   0.8     2         0             2    57.8             3   
5         0.34   0.6     1         0             1    28.9             6   

                                      
  ID                                           
1                          29.9          19  
2                        99.9          50  
3                        99.9          50  
4                          28.9          17  
5                          28.9          17  

私たちは自分で最初の行を作って名前をつけます.
#          Sheet 
import pandas as pd
#               
pd.set_option("display.unicode.east_asian_width",True)
df=pd.read_excel('order_data.xlsx',sheet_name=1,index_col=1,header=1)#header=1        ,  header=None,        (  ID  )       ,         .
print(df.head())
   p1047  10221  2017-01-01 00:00:00  2017-01-02 00:00:00  sale003    10.9  \
1                                                                            
2  p1614  10706  2017-01-01 00:00:00  2017-01-10 00:00:00  sale007  249.50   
3  p1614  10420  2017-01-01 00:00:00  2017-01-11 00:00:00  sale001   29.92   
4  p1898  10372  2017-01-01 00:00:00  2017-01-04 00:00:00  sale003   12.24   
5  p1898  10250  2017-01-01 00:00:00  2017-01-07 00:00:00  sale003    0.34   
6  p1898  10628  2017-01-01 00:00:00  2017-01-07 00:00:00  sale007   83.64   

    1.1  1.2  0  2   29.9  1.3              29.9.1  19  
1                                                           
2  1.00    5  0  1  499.5    9              99.9  50  
3  0.80    1  0  1   99.9   10              99.9  50  
4  0.80    2  0  2   57.8    3                28.9  17  
5  0.60    1  0  1   28.9    6                28.9  17  
6  0.95    8  0  3  231.2    6                28.9  17 

このようなカラムが欲しくない場合は、パラメータusecolsを使用して次のようにします.
#   
import pandas as pd
#               
pd.set_option("display.unicode.east_asian_width",True)
df=pd.read_excel('order_data.xlsx',usecols=[0,3])#     
#df=pd.read_excel('order_data.xlsx',sheet_name=1,usecols=['  ID','  ID'])     
print(df.head())
    ID    ID
0  p1047   10221
1  p1614   10706
2  p1614   10420
3  p1898   10372
4  p1898   10250

2.5導入CSVファイル
pd.read_csv(ph,sep=",",delimiter=None,header=0,names=None,index_col=None,usecols=None,dtype=None,parse_dates=Flase,enconding=None)
     :
 ph:   ,              ,  URL  
 sep:          .        .
delimiter:   .     (       , sep    )
header:             .          ,     header=None.              header.
names:    None,        .         ,             ,     header=None。
index_col:       .    None.   0 DataFrame    .
usecols:int,list     ,    None。
			usecols=None       
			usecols int       
			usecols list  ,           
			usecols    ,        Excel         。      ,  “A:F”   A  F 
dtype:           ,    None。  {"A":np.float64,"B":np.int64}
parse_dates:     ,int      ,      .    False.parse_dates          datetuime64     .
    parse_dates True,      ,
    parse_dates int         , [1,2,3],   1,2,3 index_col         .
    parse_dates        , [[1,3]],  1,3 index_col ,         .
    parse_dates    , {"  ":{[1,3]},  1、3   ,      "  "}.
enconding:       ,    None,     'utf-8',        .

2.6導入txtファイル
pd.csv(ph,sep=’\t’,enconding=‘gbk’)
.txt         "\t"

2.7 Htmlファイルのインポート
read_を使用htmlメソッドの前に、まずページテーブルがtableラベルであるかどうかを決定する.pd.read_html(ph,match=’.+’,flavor=None,header=None,index_col=None,enconding=None)
    :
ph:   ,      URL  .   https,     http.
match:     ,              .
flavor:   ,   "lxml"
header:         ,  list     
index_col:         ,  list     .
enconding:   ,   None,