numpyの、データ科学技術計算を学んだ後、なぜ私たちはパンダを使用する必要がありますか?実際には、その理由は、高効率で、なぜそれをnumpyのより効率的なパンダ?素晴らしい関係を持って実際には、パンダとnumpyのは、まだ、パンダ自体はnumpyのに依存しており、メモリ内の連続したメモリ空間のこの部分を占めるndarray、何もndarray長さを変えていないので、メモリ内のすべての値の変化の位置を作るためにバインドされ、ある程度までは、numpyの運転効率が比較的遅いです。しかし、パンダは、すべてのデータは非常に効率的で、データ以下、一般的に、より親しみやすいプロセスを処理できません。
様々なタイプのデータを扱うのに適しパンダ:
- 有するテーブルデータ(データフレーム)は、異なるデータ型の列そのようなExcelスプレッドシート、またはSQLテーブルなどを、。
- 規則正しい又は不規則(固定されていない周波数)の時系列データ。
- ラベルの行と列で任意の行列。
- 観察/統計データ・セットの任意の他の形態。
- パンダは、3つの主要なデータ構造、即ちシリーズ(一次元)、データフレーム(二次元)、パネル(D)を含みます。多くの金融、統計、工学、社会科学の大多数の典型的な問題に対処するために使用することができシリーズおよびデータフレーム。
パンダライブラリは、データ分析の時点で統計的な科学者のための理想的なツールであるために非常に適しているデータクリーニング、分析/モデリング、その後、描画や表示に適した形式に整理結果を分析プロセスのすべてのフォームを。だから、利点、それの一つ?
優位
- これは、簡単に欠けている非浮動小数点の値と浮動小数点データ型を扱うことができます
- 可変サイズ:データフレームとパネルを取り外し、挿入することができます
- 柔軟で強力なグループ化機能、データセットを分割するために組み合わせることができます
- 操作をスライスし、インデックスに簡単に、データ・アクセス
データの構造
シリーズ:同様のオブジェクトの一次元アレイ、データ構造からデータのセットとその関連データラベルのセット。それはインデックス値をデータ値にマッピングされているので、一連の、固定長順序付け辞書として考えることができます。
-
- シリーズ方式の--pd.Seriesを作成します
-
- 配列表現を取得--obj.values
-
オブジェクトのインデックスを取得します--obj.index
eg: # 第一种创建series的方式: s1 = pd.Series([1,2,3,4,5,6,7,8,9]) print(s1) print(s1.values) # series的值 print(s1.index) # 索引信息 # 第二种创建series方式: s2 = pd.Series(np.arange(10)) print(s2) # 第三种通过字典的方式创建series: s3 = pd.Series({"cecilia":90,'cc':89,'abc':97}) print(s3) print(s3.index) s4 = pd.Series(s1.to_dict()) # 转字典 print(s4) s5 = pd.isnull(s3) s5.index.name = "name score" # 给列名添加名称 print(s5)
-
インデックスアクセサにより、
>>>obj2 = pd.Series([4, 7,-5,3], index=['d','b','a','c']) #还能自定义index进行创建Series >>>obj2 d 4 b 7 a -5 c 3 dtype: int64 >>> obj2.index Index([u'd', u'b', u'a', u'c'], dtype='object') ## 通过索引存取元素和修改元素值 >>>obj2['d']= 6 # 修改index='d'的索引值 d 6 b 7 a -5 c 3 dtype: int64 >>>obj2[['c','a','d']] ## 选取index='c' 'a' 'd'的元素值 c 3 a -5 d 6 dtype: int64 ## 按照索引条件获取元素 >>>obj2[obj2>0] d 6 b 7 c 3 dtype: int64
-
- 失われたデータを検出し、pd.notnull --pd.innull
データフレーム:、テーブルデータ型で順序付けられた列のセットを含み、各列が異なる値の型であってもよいし、両方の行インデックスはデータフレーム列インデックスを有する、辞書シリーズからなるとみなすことができます。一つ以上の二次元ブロック内のデータフレームのデータではなく、リスト、辞書などの、格納されています。
-
作成データフレーム
eg: >>> data = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]} >>> df = pd.DataFrame(data) >>> print(df) a b c 0 1 4 7 1 2 5 8 2 3 6 9 注意:结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序悱列!!! ## 如果指定了列序列,则DataFrame的列就会按照指定顺序迸行排列,如果指定的列不存在,那么结果是一个空的dataframe >>>pd.DataFrame(data, columns=['b', 'a', 'c']) b a c 0 4 1 7 1 5 2 8 2 6 3 9
アクセス要素(実際シリーズ)
注意:
- 戻るjiongがシリーズは、元のデータフレームの同じインデックスを持ち、そしてその名前の属性もそれに応じて設定されています。ラインも場所や名前の方法によって得ることができます。
- 非整数モードはデータのスライスを選択した場合は、インデックスに対応するデータの端部が含まれており、スライスインデックスの整数は、インデックスデータは、そのの終わりに対応する「フリーポスト含有前駆体」
## 通过字典标记或者属性来获取Series >>> data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'], 'year':[2000, 2001, 2002, 2001, 2002], 'pop':[1.5, 1.7, 3.6, 2.4, 2.9]} >>> df= pd.DataFrame(data, columns=['year', 'state', 'pop']) >>> print(df['state']) 0 Ohio 1 Ohio 2 Ohio 3 Nevada 4 Nevada Name: state, dtype: object
IX、場所、イロコス
-
ix--行番号指標によって、それができ、インデックス行ラベル(パンダ0.20.0リリースから、公式.IX方法が推奨されていないが、.ilocと.LOC法の使用)
LOC - LOC [「d」はまず「D」線(インデックス文字)行タグデータによってインデックス列のインデックスを示し、インデックスは行の列であってもよいです
iloc--データ取得行番号または複数のデータ行によって行が、行ラベルによって取得は文句であろう
## 承接上面的df >> print(df.loc[1]) # 选取第一行的数据 state Ohio year 2001 pop 1.7 Name: 1, dtype: object >> print(df.loc[0:2]) # 选取index=0到index=2行的数据,总共三行数据 state year pop 0 Ohio 2000 1.5 1 Ohio 2001 1.7 2 Ohio 2002 3.6 ## 可以锁定行,按照特征属性多列选取元素 >> num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars'] >> bar_heights = norm_data.loc[0, num_cols].values >> print(bar_heights) [4.3 3.55 3.9 4.5 5.0] ## 重置索引index,通过行号获取数据 >> df.reset_index(inplace=True) >> df.head() >> print(df.iloc[2:4]) # 获取第2行、第3行数据 index state year pop 2 2 Ohio 2002 3.6 3 3 Nevada 2001 2.4
インデックス--reindex()関数を再構築:新しいインデックスに応じて再配置されます。現在のインデックス値が存在しない場合、欠損値の導入は、充填方法は、欠損値を処理するために使用することができます
いくつかの引数があります。
参数 说明 index 用作索引的新序列。既可以是index实例,也 可以是其他序列型的Python数据结构。Index 会被完全使用,就像没有任何复制一样。 method 插值(填充)方式。 fill_value 在重新索引的过程中,需要引入缺失值时使用 的替代值 . limit 前向或后向填充时的最大填充量. level 在Multiindex的指定级别上匹配简单索引,否 则选取其子集 copy 默认为True,无论如何都复制;如果为False, 则新旧相等就不复制 其中method方法的参数如下: 参数 说明 ffill或pad 前向填充(或搬运)值 bfill或backfill 后向填充(或搬运)值
fill_value = 0、0、直接充填
-
- 任意軸指標値--dropを削除する(インデックス、軸= 1/0)
-
関数を適用 -機能は、和のような行または列によって形成された一次元アレイ、などを意味するように適用されます
eg: # 将求最大值和最小值之间的差得函数运用在某一轴上 >>>f = lambda x: x.max() - x.min() >>>frame.apply(f) >>>frame.apply(f, axis=1)
ランキングと並べ替え
-
- sort_index -行または列インデックス(辞書順)にソート
- 注文 -シリーズの値によってソート
- ランク - 「グループの平均は順位が割り当てられ、」によってランク、デフォルトでは、ランクと同じレベルの方法で関係を弱体化させます
eg: >>>frame = DataFrame(np.arange(8).reshape((2, 4)), index=['three', 'one'], columns=['d','a','b','c']) >>>frame.sort_index() >>>frame.sort_index(axis=1) ## 默认的是升序排列,但也可以降序排列 >>>frame.sort_index(axis=1, ascending=False) ## 根据一个或多个列觉得值进行排序,采用**by选项** >>>frame.sort_index(by=['three', 'one']) ## 如要按照值对Series 进行排序,那么可以order >>>obj = Series([4, 7, -3, 2]) >>>obj.order() 2 -3 3 2 0 4 1 7 >>>obj = Series([4, np.nan, 1, np.nan, -3, 2]) >>>obj.order() #在排序时,缺失值默认都会被放到Series的末尾. 4 -3 2 1 5 2 0 4 1 NaN NaN
注:ランク(Series.rank(方法=「平均」 、昇順= TRUE)) (1からnまで)ランク値に彼のオブジェクトに代わるソートアクションとは異なります。まず、平均、最小値、最大値:そして、唯一の問題は、同じレベルの項目を処理する方法で、メソッドのパラメータでメソッドがプレイこの役割で、彼は4つの選択可能な値を持っています 。
-
- プロパティが一意であるかどうかを確認Is_unique--
概要と統計
-
- 和(軸= 1/0) - 行の合計に応じて軸= 1
-
- (軸= 1、skipna = false)を意味 - NA計算ランクの存在を避けるためにskipnaオプションが見つかり
-
- idxminとidxmax、最小または最大のインデックスに到達
-
- ワンタイム・サマリー統計用describe--
得られ欠落データ処理モード
除去
充填