1. ホーム
  2. python

データフレームの基本

2022-02-10 03:43:41
<パス

空のDataFrameを初期化する

import pandas as pd
empty_df = pd.DataFrame(columns=['A','B','C','D'])


4つのカラムが作成され、それぞれのカラムには空のコンテンツがあります。

データサイズを表示する

1. 行数および列数

df.shape

df.groupby('column_name').count()

a=pd.DataFrame({'a':[1,2,3],'b':[2,3,4]})
b=pd.DataFrame({'a':[11,22,33],'c':[22,33,44]})
c=pd.merge(a,b)
c


2. 特定の列名による統計

c=pd.merge(a,b,how='outer',on='a')
c

pd.concat(a,b)
# Horizontal stitching
pd.concat([a,b], axis=1)
# Vertical stitching
pd.concat([a,b], axis=0)


<イグ

DataFrameデータのスティッチング・マージ

pd.merge()

TypeError: first argument must be an iterable of pandas objects, you passed an object of type "DataFrame"


<イグ

同名のaリストとbリストはマージされますが、両方とも空です。これはデフォルトの結合形式が内側結合であること、つまり、両方ともデフォルトで同じカラム名をルックアップ条件として持ち、同じ値が見つからない場合はnullを返すことを表しています。

結合条件を追加する
pd.concat([a,b])


<イグ

pd.concat()

d=pd.concat([a,b])
d.index=list(range(0,6))
d


エラーの報告

e=pd.Series(list('abc'))
a['c']=e
a

a.join(b)


pandas.concat(a,b)をマージに使う場合、リスト形式にする必要があります。

ValueError: columns overlap but no suffix specified: Index(['a', 'c'], dtype='object')


<イグ
これは2つのテーブルa,bを完全に結合します。デフォルトの結合形式は連結ですが、パラメータを変更することで結合モードと結合方向を変更できますし、インデックスの再作成も可能です。

ウェイトの更新

inp = [{'c1':10, 'c2':100}, {'c1':11, 'c2':110}, {'c1':12, 'c2':123}]
df = pd.DataFrame(inp)
df


<イグ

課題

assignment文は、1列のデータのスティッチングを可能にします。

for index, row in df.iterrows():
    print(index, row['c1'], row['c2'])

0 10 100
1 11 110
2 12 123


<イグ

データフレーム.join()

for row in df.itertuples():
    print(getattr(row, 'c1'), getattr(row, 'c2'))

10 100
11 110
12 123


エラーを報告する。

for index, row in df.iteritems():
    print(index, row[0], row[1], row[2])

c1 10 11 12
c2 100 110 123


<イグ

リストには、重複した名前を入れることはできません

DataFrameを行単位でトラバースする

  • iterrows(): DataFrameの各行を(index, Series)のペアとして反復処理し、要素のrow[name]でアクセスできるようにします。
  • itertuples(): 行に対して反復処理する。DataFrame の各行を祖先として反復処理し、row[name] によって要素にアクセスする。iterrows() よりも効率的である。
  • iteritems(): DataFrameを列単位で反復処理する。DataFrameの各列を(列名, Series)のペアとして反復処理し、row[index]を介して要素にアクセスすることができるようにする。
inp = [{'c1':10, 'c2':100}, {'c1':11, 'c2':110}, {'c1':12, 'c2':123}]
df = pd.DataFrame(inp)
df


<イグ

1. 行ごとの iterrows()

行['name']の

for index, row in df.iterrows():
    print(index, row['c1'], row['c2'])

0 10 100
1 11 110
2 12 123


2. 行ごとの itertuples()

getattr(行, '名前')

for row in df.itertuples():
    print(getattr(row, 'c1'), getattr(row, 'c2'))

10 100
11 110
12 123


3. 列ごとの iteritems()

行[インデックス]の

for index, row in df.iteritems():
    print(index, row[0], row[1], row[2])

c1 10 11 12
c2 100 110 123


https://blog.csdn.net/sinat_29675423/article/details/87972498

DataFrameのインデックス

pandasはDataFrameのインデックスを作成するための特別なメソッドを提供しています。できれば、ラベルを使用している場合はlocメソッドを、添え字を使用している場合はilocメソッドを使用することをお勧めします。

基本事項のまとめ
https://www.jianshu.com/p/8024ceef4fe2