チュートリアルのデータ分析ツールのパンダシリーズ(B):強力なデータフレームから

記事中のチュートリアルのデータ解析ツールのパンダシリーズ():シリーズから言えば他のデータ構造のデータフレームについての話に、今日のデータ構造シリーズを、基礎となるパンダの詳細:中。

ここに画像を挿入説明

例えば、一連の構成として、データフレームの表形式のデータ構造は、列の順序付けられたセットにより、辞書を見ることができるされています。

/ 名前 性別 コース グレード
0 ボブ 男性 数学 99
1 アリス 女性 英語 92
2 ジョー 男性 中国の 89
3 ボブ 男性 中国の 88
4 アリス 女性 中国の 95
5 ジョー 男性 英語 93
6 ボブ 男性 英語 95
7 アリス 女性 数学 79
8 ジョー 男性 数学 89

データフレームの一般的な方法を作成します。

名前、性別、もちろん、グレード、これら:例えば上のデータフレームのように、インデックス、違いは、一つだけのインデックスに加えてシリーズですが、データフレームは、通常の列の多くを持って、そこに4があり、そして名前を持つがあるデータフレーム、同じシリーズカラム名(インデックス)と呼ばれるカラムに名前、缶インデックスは、したがって、データフレームで、Iは、区別するために、インデックス行インデックスおよび列インデックスと呼ばれることを好みます。

データフレーム実際の作成、そこにすべての一般的に使用された後、Nの通り、11マスターする必要がありますが、2は3であり、私は自分の理解によると、名手容疑者の存在としての方法は、再びそれを言うすべては、私はこれらを入れて作成するつもりはありません。 2つのカテゴリに分かれて統一的作成:列を作成する方法を、方法によって作成された行は、彼らが最も代表を作成する方法の下でこれらの二つのカテゴリーのそれぞれについて話しています。

データフレーム上の例を作成するために、同じ。

列によって作成されました

import pandas as pd
#没有设置行索引 index,取默认值
df = pd.DataFrame({'name':['Bob','Alice','Joe']*3,
               'sex':['male','female','male']*3,
               'course':['math','english','chinese','chinese','chinese','english','english','math','math'],
               'grade':[99,92,89,88,95,93,95,79,89]})
print(df)

ここに画像を挿入説明

ラインによって作成されました

data = [['Bob','male','math',99],
['Alice','female','english',92],
['Joe','male','chinese',89],
['Bob','male','chinese',88],
['Alice','female','chinese',95],
['Joe','male','english',93],
['Bob','male','english',95],
['Alice','female','math',79],
['Joe','male','math',89]]
columns = ['name','sex','course','grade']
df = pd.DataFrame(data=data,columns=columns)
print(df)

上記の結果を印刷します。

データフレームの基本的な性質と全体的な説明

プロパティ 意味
df.shape 列の行のDF数
df.index DFの行インデックス
df.columns (名)のDFの列インデックス
df.dtypes 各列のデータ型DF
df.valuse オブジェクト値DF、二次元アレイndarrayあります
print(df.shape,'\n')
print(df.index,'\n')
print(df.columns,'\n')
print(df.dtypes,'\n')
print(df.values,'\n')

ここに画像を挿入説明

そのパンダデータ型を推論することができるので、各列のデータ・タイプは、等級は、このように64の代わりにint型のオブジェクトであることに留意されたいです。

機能 効果
df.head() 前列を印刷N、デフォルトのライン5
df.tail() 印刷nは、デフォルトのライン5の後ろに行
df.info() 等全体情報の概要印刷行数、列、列インデックス、非ヌル値の列番号、
df.describe() 数、平均、分散、最小値、四分位、最大ので、全体的な説明を印刷
print(df.head(),'\n')
print(df.tail(3),'\n')
print(df.info(),'\n')
print(df.describe(),'\n')

ここに画像を挿入説明
ここに画像を挿入説明

データフレームの問い合わせ

LOC []とILOC []

リードチュートリアルのデータ解析ツールパンダシリーズ():シリーズから言えば認識しておく必要があり、読者iloc[]のことiであり、integer意味の意味iloc[]のみ所在照会を介して、及びloc[]、列インデックスクエリ行ができ、同様に、この2つの機能両方のクエリでは、あなたはまた、編集を追加することができます。

差を反映するために、我々は最初の0-8 1-9から行インデックスに変換(前部閉鎖閉鎖部、及び参照range()フロント開閉部)。

df.index = range(1,10)

ここに画像を挿入説明

100にボブの数学の点数:我々はタスクを完了するとします。

loc[]次の完了:

df.loc[1,'grade'] = 100
print(df,'\n')

ここに画像を挿入説明

そして、使用はiloc[]、以下のように、対応するコードは次のようになります。

df.iloc[0,3] = 100
print(df,'\n')

iloc[]これは、ベース、及び場合行インデックス、ほとんど関係の列インデックスを照会し、そしてこれは私が比較容易にするために、索引の前にラインを変更する理由であるiloc[]loc[]最初のパラメータの情報を。

この点は、2つのクエリは、実際には、クエリされ、loc[]そしてiloc[]次のようにもブロックに関するお問い合わせ、サンプルコードをサポートしています。

print(df.loc[[1,3,9],['name','grade']],'\n')
print(df.iloc[[0,2,8],[0,3]])

ここに画像を挿入説明

トラバーサルクエリ

for index,row in df.iterrows():
	print(index,': ',row['name'],row['sex'],row['course'],row['grade'])

ここに画像を挿入説明

シリーズとの関係

あなたは一連のデータフレームを作成することができます。

names = pd.Series(['Bob','Alice','Joe']*3)
sexs = pd.Series(['male','female','male']*3)
courses = pd.Series(['math','english','chinese','chinese','chinese','english','english','math','math'])
grades = pd.Series([99,92,89,88,95,93,95,79,89])
df = pd.DataFrame({'name':names,'sex':sexs,'course':courses,'grade':grades})

結果は、道の列を作成する方法を作成するために分けることができるデータフレームその記事の冒頭で印刷されますが、一般的にそのように上記の話されていません。

シリーズは、データフレームDF [列名]によってによって得ることができます。

print(df['name'],type(df['name']),'\n')

ここに画像を挿入説明

その結果、一連の動作のすべてdf['name']

print(df['name'].values,type(df['name'].values),'\n')
print(df['name'].unique(),type(df['name'].unique()),'\n')

ここに画像を挿入説明

リストとして印刷結果(理由のが、series.valuesまたはseries.unique()リストを返しません:私は私の最後の記事でで正しい間違っにここにいる__str__()関数がオーバーロードされている)が、実際にそれがあるndarrayオブジェクト配列の類似したリストは、次のことができ.tolist()、リストを回します。

print(df['name'].values.tolist(),type(df['name'].values.tolist()),'\n')
print(df['name'].unique().tolist(),type(df['name'].unique().tolist()),'\n')

ここに画像を挿入説明

シリーズは、重要な操作行方不明最後の言ったapply():カラムを処理するためのデータを、それはあなたがまた、関数名、既に定義関数(なしテープを使用することができ、パラメータとしてラムダ式を使用することができる()パラメータとして)、例えば、我々はすべてのを作ります各コースプラスマイナス10分の個人業績:

# lambda 表达式适用于比较简单的处理
df['grade'] = df['grade'].apply(lambda x:x-10)
print(df,'\n')
# 定义函数适用于比较复杂的处理,这里仅作示例
def operate(x):
	return x+10
df['grade'] = df['grade'].apply(operate)
print(df)

ここに画像を挿入説明

注意apply()関数は戻り値であり、使用することですdf['grade']そうでない場合、全体のデータフレームは、この列だけグレードを残して、DFのではなく、受信。

新しい削除行または列

一般的に使用されるいくつかの開始/追加、削除行または列以下の列挙方法を、ここで私は言いました。

して、削除行/列drop()を完全に機能:

# drop() 的第一个参数是行索引或者列索引
# axis = 0  删除行
df.drop([0,7,8],axis=0,inplace=True) # 删除所有人的数学成绩
# axis = 0  删除列
df.drop(['sex'],axis=1,inplace=True) # 删除所有人的性别信息
print(df)

ここに画像を挿入説明

新しい行としてシリーズが利用可能であるset_value()at[]場合loc[]行インデックスが存在し、それが修正、または新規であり;各ライン同様の効果が、次の3行、100の英語アリスのスコア修正されます。

# 不一定非得要列表,只要是可迭代对象即可
df.loc[1] = ['Alice', 'english', 100]
df.at[1] = ['Alice', 'english', 100]
# set_value 会在将来被舍弃
df.set_value(1, df.columns, ['Alice', 'english', 100], takeable=False)

缶を追加しdf[列名]=可迭代对象たりdf[:,列名]=可迭代对象、そのような新しいパフォーマンスレベルとして駆動タスクに実装され、60点以下に失敗し、60-89のように良い、好ましくは90〜100の:

level = []
for grade in df['grade'].values.tolist():
	if grade<60:
		level.append('不及格')
	elif grade>=60 and grade<90:
		level.append('良')
	else:
		level.append('优')
df['level'] = level
print(df)

ここに画像を挿入説明

このように、二つの基本的なデータ構造でのパンダは、様々な機能でファイルを読み書き話の隣のピットパンダを終えました。

84元記事公開 ウォンの賞賛250 ビュー150,000 +を

おすすめ

転載: blog.csdn.net/ygdxt/article/details/104214096