python:pandasにおけるdataframeの基本的な使い方のまとめ

6070 ワード

詳細は次のとおりです.https://blog.csdn.net/hhtnan/article/details/80080240(基本関数整理)
一.DataFrameの作成
空のdataframeを作成
df=pd.DataFrame(columns={"a":"","b":"","c":""},index=[0])

  out:
     a    c    b
0  NaN  NaN  NaN

listのデータでdataframeを作成するには:
a = [['2', '1.2', '4.2'], ['0', '10', '0.3'], ['1', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
print df

  out:
  one  two three
0   2  1.2   4.2
1   0   10   0.3
2   1    5     0

numpyのマトリクスでdataframeを作成する
array = np.random.rand(5,3)
df = pd.DataFrame(array,columns=['first','second','third'])

dictのデータでDataFrameを作成する
data = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] }
df = pd.DataFrame(data)

 
dict = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] }
df = pd.DataFrame.from_dict(dict,orient='index').T

   
csvまたはexcelファイルの読み込みをDataFrame形式にする
df=pd.read_csv('D:/Program Files/example.csv')

Excel 1つのテーブルに複数のsheetがある場合があります.sheetnameは選択できます.
df = df.read_excel('D:/Program Files/example.xls',sheetname=0)

  
 
二.DataFrameの説明とタイプ
describeにはdataframeの基本統計データが表示されます.数量、平均値、中位数、標準差などです.
headにはdataframeの最初の行、後の行が表示されます.
print df.describe()
print df.head()
print df.tail(10)

カラムの統計値を個別に計算
df['one'].sum()
df['one'].mean()
df['one'].count()
df['one'].max()
df['one'].min()

Dataframeのデータ型を表示するには、次の手順に従います.
print (df.dtypes)

Dataframeのデータ数を表示するには、次の手順に従います.
print (df.size)

Dataframeのシェイプを表示するには:
print (df.shape)

列の数を返します.
print (df.ndim)

横長座標のラベル名を表示するには、次の手順に従います.
print (df.axes)

  
 
三.DataFrameのスライス
ilocインデックスまたはスライス(ilocでは整数値のみ):
print df.iloc[1,:] # 1 ,   
print df.iloc[:,[0,2]] # 0 , 0   2 
print df['one'].iloc[2] #    +  

locインデックスまたはスライス(locでstrを取ることができます):
print data.loc[0:1, ['one', three']] #

Dataframeの1つまたは複数の文字列の列をフィルタします.
list=['key1','key2']
df = df[df['one'].isin(list)]

Dataframeに1つまたは複数の文字列を含まない列をフィルタします.逆選択に相当します.
df = df[~df['one'].isin(list)]

  
 
四.欠落値の処理
欠落した値は削除するか、平均値または0等数で入力できます.
df.fillna(df1.mean())
df.fillna(0)

欠落した値を削除するときにカラムを指定します.
df = df.dropna(subset=['one','two'])

  
 
五.行または列の削除
重さを落とすにはsubsetでどの列の値を指定してフィルタする必要があります.選択しないとデフォルトの行全体の値がすべて同じになります.
firstは最初に現れた値を保持する行を表し、lastは最後に現れた重複値を保持する行を表し、falseは重複した行をすべて削除することを表す
df=df.drop_duplicates(subset='one',keep='first')

NaN値を持つ行または列を除去します(axis=0行を除去し、=1列を除去します):
df = df.dropna(axis=0)
df = df.dropna(axis=1)

列を削除します.
df = df.drop(['one'],axis=1)

数を含む行を削除します.
row_list = df[df.one == 2].index.tolist() #            
df = df.drop(row_list)

  
 
六.DataFrameの変更
データ型の変更
df['one']=pd.DataFrame(df['one'],dtype=np.float)

列名の変更(変更する必要がある列と変更しない列を含むすべての列名を書く必要があります):
df.columns = ['first','second','all']

カラム名の変更(変更するカラムを書くだけ)
df.rename(columns = {'one':'first','two':'second'},inplace = True) #inplace=True    df,  False             

並べ替え(byは複数のカラム名、デフォルトの昇順を取得できます):
df = df.sort_values(by=['one'],ascending = True)
df = df.sort_index(axis = 0,ascending = True,by = 'one')
df = df.sort(columns = ['one'],axis = 0,ascending = True)

データの変更
df.iloc[1,2] = 10

既存のカラムで演算して新しいカラムを作成する
df['new_colume'] = df['one'] + df['two']

  
 
七.Dataframeインデックスの変更
不要なローを削除すると、ローインデックスが不連続になり、新しいインデックスを再設計できます.
df['index']=range(len(df['one']))
df.set_index('index')

時系列を索引として設定
dd = pd.date_range(start='4/1/2018',periods=5)
#dd = pd.date_range('4/1/2018','4/5/2018')
df = df.set_index(dd)

  
 
八.新しいローを追加し、2つのdataframeを接続します.
axisは接続の方向を表し、axis=0は2つのdataframeの行数が増加することを表し、列名が同じであれば直接列を共用し、列名が異なると新しい列を生成する.axis=1、新しい列が追加されることを示します
df=pd.concat([df,df],axis=0) #          2 ,    

Dataframeに新しいローを追加
df = df.append(df.loc[2,:],,ignore_index=True) 

2つのdataframeのカラム名が同じ場合はmergeも使用できます.
df = pd.merge(df,df)

  
 
九.DataFrameの出力
出力はexcelまたはcsv形式で、csvファイルのデータが読み込まれた場合のデータ型はデフォルトobject、excelは元のデータ型を保持します
df.to_excel('path/filename.xls')
df.to_csv('path/filename.csv')

出力numpyのマトリクスフォーマット
matrix = df.ax_matrix()

出力はdict形式
dict = df.to_dict(orient="dict")