目次
Series
DataFrame
对象属性
重新索引
删除指定轴上的项
索引和切片
再インデックス
指定した軸上の項目を削除します
インデックス作成とスライス
算术运算和数据对齐
函数应用和映射
排序和排名
统计方法
is(not)null
dropna

fillna

fillna
inplace 参数

パンダの基本

Jun 23, 2017 pm 03:54 PM
pandas ベース

pandas は、より高度なデータ構造とツールを含む Numpy に基づくデータ分析パッケージです。

ndarray をコアとする Numpy と同様に、pandas も Series と DataFrame の 2 つのコア データ構造を中心に展開します。 Series と DataFrame は、それぞれ 1 次元のシーケンスと 2 次元のテーブル構造に対応します。 pandas の従来のインポート方法は次のとおりです。

from pandas import Series,DataFrame
import pandas as pd
ログイン後にコピー

Series


Series は、固定長の順序付き辞書とみなすことができます。基本的に、あらゆる 1 次元データを Series オブジェクトの構築に使用できます:

>>> s = Series([1,2,3.0,'abc'])
>>> s
0      1
1      2
2      3
3    abc
dtype: object
ログイン後にコピー

dtype:object にはさまざまな基本データ型を含めることができますが、常にパフォーマンスに影響を与えると思われるため、これが最善ですシンプルにするために dtype を使用します。 dtype:object 可以包含多种基本数据类型,但总感觉会影响性能的样子,最好还是保持单纯的 dtype。

Series 对象包含两个主要的属性:index 和 values,分别为上例中左右两列。因为传给构造器的是一个列表,所以 index 的值是从 0 起递增的整数,如果传入的是一个类字典的键值对结构,就会生成 index-value 对应的 Series;或者在初始化的时候以关键字参数显式指定一个 index 对象:

>>> s = Series(data=[1,3,5,7],index = ['a','b','x','y'])
>>> s
a    1
b    3
x    5
y    7
dtype: int64
>>> s.index
Index(['a', 'b', 'x', 'y'], dtype='object')
>>> s.values
array([1, 3, 5, 7], dtype=int64)
ログイン後にコピー

Series 对象的元素会严格依照给出的 index 构建,这意味着:如果 data 参数是有键值对的,那么只有 index 中含有的键会被使用;以及如果 data 中缺少响应的键,即使给出 NaN 值,这个键也会被添加。

注意 Series 的 index 和 values 的元素之间虽然存在对应关系,但这与字典的映射不同。index 和 values 实际仍为互相独立的 ndarray 数组,因此 Series 对象的性能完全 ok。

Series 这种使用键值对的数据结构最大的好处在于,Series 间进行算术运算时,index 会自动对齐。

另外,Series 对象和它的 index 都含有一个 name 属性:

>>> s.name = 'a_series'
>>> s.index.name = 'the_index'
>>> s
the_index
a            1
b            3
x            5
y            7
Name: a_series, dtype: int64
ログイン後にコピー

DataFrame


DataFrame 是一个表格型的数据结构,它含有一组有序的列(类似于 index),每列可以是不同的值类型(不像 ndarray 只能有一个 dtype)。基本上可以把 DataFrame 看成是共享同一个 index 的 Series 的集合。

DataFrame 的构造方法与 Series 类似,只不过可以同时接受多条一维数据源,每一条都会成为单独的一列:

>>> data = {'state':['Ohino','Ohino','Ohino','Nevada','Nevada'],
        'year':[2000,2001,2002,2001,2002],
        'pop':[1.5,1.7,3.6,2.4,2.9]}
>>> df = DataFrame(data)
>>> df
   pop   state  year
0  1.5   Ohino  2000
1  1.7   Ohino  2001
2  3.6   Ohino  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002

[5 rows x 3 columns]
ログイン後にコピー

虽然参数 data 看起来是个字典,但字典的键并非充当 DataFrame 的 index 的角色,而是 Series 的 “name” 属性。这里生成的 index 仍是 “01234”。

较完整的 DataFrame 构造器参数为:DataFrame(data=None,index=None,coloumns=None),columns 即 “name”:

>>> df = DataFrame(data,index=['one','two','three','four','five'],
               columns=['year','state','pop','debt'])
>>> df
       year   state  pop debt
one    2000   Ohino  1.5  NaN
two    2001   Ohino  1.7  NaN
three  2002   Ohino  3.6  NaN
four   2001  Nevada  2.4  NaN
five   2002  Nevada  2.9  NaN

[5 rows x 4 columns]
ログイン後にコピー

同样缺失值由 NaN 补上。看一下 index、columns 和 索引的类型:

>>> df.index
Index(['one', 'two', 'three', 'four', 'five'], dtype='object')
>>> df.columns
Index(['year', 'state', 'pop', 'debt'], dtype='object')
>>> type(df['debt'])
<class &#39;pandas.core.series.Series&#39;>
ログイン後にコピー

DataFrame 面向行和面向列的操作基本是平衡的,任意抽出一列都是 Series。

对象属性


重新索引

Series 对象的重新索引通过其 .reindex(index=None,**kwargs) 方法实现。**kwargs 中常用的参数有俩:method=None,fill_value=np.NaN

ser = Series([4.5,7.2,-5.3,3.6],index=[&#39;d&#39;,&#39;b&#39;,&#39;a&#39;,&#39;c&#39;])
>>> a = [&#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;,&#39;e&#39;]
>>> ser.reindex(a)
a   -5.3
b    7.2
c    3.6
d    4.5
e    NaN
dtype: float64
>>> ser.reindex(a,fill_value=0)
a   -5.3
b    7.2
c    3.6
d    4.5
e    0.0
dtype: float64
>>> ser.reindex(a,method=&#39;ffill&#39;)
a   -5.3
b    7.2
c    3.6
d    4.5
e    4.5
dtype: float64
>>> ser.reindex(a,fill_value=0,method=&#39;ffill&#39;)
a   -5.3
b    7.2
c    3.6
d    4.5
e    4.5
dtype: float64
ログイン後にコピー

.reindex() 方法会返回一个新对象,其 index 严格遵循给出的参数,method:{&#39;backfill&#39;, &#39;bfill&#39;, &#39;pad&#39;, &#39;ffill&#39;, None} 参数用于指定插值(填充)方式,当没有给出时,自动用 fill_value 填充,默认为 NaN(ffill = pad,bfill = back fill,分别指插值时向前还是向后取值)

DataFrame 对象的重新索引方法为:.reindex(index=None,columns=None,**kwargs)。仅比 Series 多了一个可选的 columns 参数,用于给列索引。用法与上例类似,只不过插值方法 method 参数只能应用于行,即轴 0。

>>> state = [&#39;Texas&#39;,&#39;Utha&#39;,&#39;California&#39;]
>>> df.reindex(columns=state,method=&#39;ffill&#39;)
    Texas  Utha  California
a      1   NaN           2
c      4   NaN           5  
d      7   NaN           8

[3 rows x 3 columns]
>>> df.reindex(index=[&#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;],columns=state,method=&#39;ffill&#39;)
   Texas  Utha  California
a      1   NaN           2
b      1   NaN           2
c      4   NaN           5
d      7   NaN           8

[4 rows x 3 columns]
ログイン後にコピー

不过 fill_value 依然对有效。聪明的小伙伴可能已经想到了,可不可以通过 df.T.reindex(index,method=&#39;**&#39;).T 这样的方式来实现在列上的插值呢,答案是可行的。另外要注意,使用 reindex(index,method=&#39;**&#39;) 的时候,index 必须是单调的,否则就会引发一个 ValueError: Must be monotonic for forward fill,比如上例中的最后一次调用,如果使用 index=[&#39;a&#39;,&#39;b&#39;,&#39;d&#39;,&#39;c&#39;] 的话就不行。

删除指定轴上的项

即删除 Series 的元素或 DataFrame 的某一行(列)的意思,通过对象的 .drop(labels, axis=0) 方法:

>>> ser
d    4.5
b    7.2
a   -5.3
c    3.6
dtype: float64
>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> ser.drop(&#39;c&#39;)
d    4.5
b    7.2
a   -5.3
dtype: float64
>>> df.drop(&#39;a&#39;)
   Ohio  Texas  California
c     3      4           5
d     6      7           8

[2 rows x 3 columns]
>>> df.drop([&#39;Ohio&#39;,&#39;Texas&#39;],axis=1)
   California
a           2
c           5
d           8

[3 rows x 1 columns]
ログイン後にコピー

.drop() 返回的是一个新对象,元对象不会被改变。

索引和切片

就像 Numpy,pandas 也支持通过 obj[::]

Series オブジェクトには、インデックスと値という 2 つの主要な属性が含まれています。これらは、上記の例では左と右の列です。コンストラクターに渡されるのはリストであるため、index の値は 0 から増加する整数です。辞書のようなキーと値のペア構造が渡されると、index-value に対応する Series が生成されます。初期化 キーワード パラメーターを使用してインデックス オブジェクトを明示的に指定する場合:

>>> foo
a    4.5
b    7.2
c   -5.3
d    3.6
dtype: float64
>>> bar
0    4.5
1    7.2
2   -5.3
3    3.6
dtype: float64
>>> foo[:2]
a    4.5
b    7.2
dtype: float64
>>> bar[:2]
0    4.5
1    7.2
dtype: float64
>>> foo[:&#39;c&#39;]
a    4.5
b    7.2
c   -5.3
dtype: float64
ログイン後にコピー
ログイン後にコピー

Series オブジェクトの要素は、指定されたインデックスに従って厳密に構築されます。つまり、データ パラメーターにキーと値のペアがある場合、データ パラメーターに含まれるキーのみが作成されます。インデックスが使用され、応答キーがデータにない場合は、NaN 値が指定された場合でもキーが追加されます。 🎜🎜Seriesのインデックスと値の要素との対応はありますが、辞書のマッピングとは異なることに注意してください。インデックスと値は実際には依然として独立した ndarray 配列であるため、Series オブジェクトのパフォーマンスはまったく問題ありません。 🎜🎜Series キーと値のペアを使用したこのデータ構造の最大の利点は、Series 間で算術演算が実行されるときにインデックスが自動的に整列されることです。 🎜🎜さらに、Series オブジェクトとそのインデックスの両方に name 属性が含まれています: 🎜
>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.ix[:2,:2]
   Ohio  Texas
a     0      1
c     3      4

[2 rows x 2 columns]
>>> df.ix[&#39;a&#39;,&#39;Ohio&#39;]
0
ログイン後にコピー
ログイン後にコピー
🎜🎜🎜DataFrame🎜🎜🎜DataFrame は、順序付けされた列のセットを含む表形式のデータ構造です (インデックス)、各列は異なる値の型にすることができます(dtype を 1 つだけ持つことができる ndarray とは異なります)。基本的に、DataFrame は、同じインデックスを共有する Series のコレクションと考えることができます。 🎜🎜DataFrame の構築方法は Series と似ていますが、複数の一次元データ ソースを同時に受け入れることができ、それぞれが個別の列になる点が異なります。🎜
>>> df[&#39;Ohio&#39;]
a    0
c    3
d    6
Name: Ohio, dtype: int32
>>> df[:&#39;c&#39;]
   Ohio  Texas  California
a     0      1           2
c     3      4           5

[2 rows x 3 columns]
>>> df[:2]
   Ohio  Texas  California
a     0      1           2
c     3      4           5

[2 rows x 3 columns]
ログイン後にコピー
ログイン後にコピー
🎜パラメータ データは辞書のように見えますが、ディクショナリのキーは、DataFrame ロールのインデックスとして機能するのではなく、シリーズの「名前」属性として機能します。ここで生成されるインデックスは「01234」のままです。 🎜🎜より完全な DataFrame コンストラクターのパラメーターは次のとおりです: DataFrame(data=None,index=None,coloumns=None)、列は「name」です: 🎜
>>> df[&#39;Texas&#39;]>=4
a    False
c     True
d     True
Name: Texas, dtype: bool
>>> df[df[&#39;Texas&#39;]>=4]
   Ohio  Texas  California
c     3      4           5
d     6      7           8

[2 rows x 3 columns]
>>> df.ix[:,df.ix[&#39;c&#39;]>=4]
   Texas  California
a      1           2
c      4           5
d      7           8

[3 rows x 2 columns]
ログイン後にコピー
ログイン後にコピー
🎜同様に、欠損値は埋められますNaNで。インデックス、列、インデックスの種類を見てみましょう: 🎜
>>> foo = Series({&#39;a&#39;:1,&#39;b&#39;:2})
>>> foo
a    1
b    2
dtype: int64
>>> bar = Series({&#39;b&#39;:3,&#39;d&#39;:4})
>>> bar
b    3
d    4
dtype: int64
>>> foo + bar
a   NaN
b     5
d   NaN
dtype: float64
ログイン後にコピー
ログイン後にコピー
🎜DataFrame の行指向と列指向の操作は基本的にバランスが取れており、抽出された列はすべて Series です。 🎜🎜オブジェクト プロパティ🎜🎜

再インデックス

🎜Series オブジェクトの再インデックスは、.reindex(index=None,**kwargs) メソッドを通じて実装されます。 **kwargs には 2 つの一般的に使用されるパラメータがあります: method=None,fill_value=np.NaN: 🎜
f = lambda x:x.max()-x.min()
>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.apply(f)
Ohio          6
Texas         6
California    6
dtype: int64
>>> df.apply(f,axis=1)
a    2
c    2
d    2
dtype: int64
ログイン後にコピー
ログイン後にコピー
🎜.reindex() メソッドwill インデックスが指定されたパラメータに厳密に従う新しいオブジェクトを返します。method:{'backfill', 'bfill', 'pad', 'ffill', None} パラメータは補間 (充填) を指定するために使用されます。メソッドが指定されていない場合、自動的に fill_value で埋められます。デフォルトは NaN です (ffill = パッド、bfill = バック フィルは、それぞれ補間中の前方値または後方値を指します) 🎜🎜DataFrame オブジェクトインデックス付けメソッドは: .reindex(index=None,columns=None,**kwargs) です。オプションの列パラメーターは Series 以外に 1 つだけあり、列のインデックス付けに使用されます。使用法は上記の例と似ていますが、内挿メソッド method パラメーターが行、つまり軸 0 にのみ適用できる点が異なります。 🎜
>>> df.sort_index(by=&#39;Ohio&#39;)
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.sort_index(by=[&#39;California&#39;,&#39;Texas&#39;])
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.sort_index(axis=1)
   California  Ohio  Texas
a           2     0      1
c           5     3      4
d           8     6      7

[3 rows x 3 columns]
ログイン後にコピー
ログイン後にコピー
🎜しかし、fill_value はまだ有効です。賢い友人なら、df.T.reindex(index,method='**').T を通じて列の補間を実現できるかどうかをすでに考えているかもしれません。その答えは実現可能です。また、reindex(index,method='**') を使用する場合、インデックスは単調である必要があります。そうでない場合、ValueError: Must be monotonic for forward fill がトリガーされることにも注意してください。 code> (上記の例の最後の呼び出しなど) index=['a','b','d','c'] を使用すると機能しません。 🎜

指定した軸上の項目を削除します

🎜これは、オブジェクトの .drop(labels, axis=0) を通じて、Series の要素または DataFrame の特定の行 (列) を削除することを意味します。 メソッド: 🎜
>>> ser=Series([3,2,0,3],index=list(&#39;abcd&#39;))
>>> ser
a    3
b    2
c    0
d    3
dtype: int64
>>> ser.rank()
a    3.5
b    2.0
c    1.0
d    3.5
dtype: float64
>>> ser.rank(method=&#39;min&#39;)
a    3
b    2
c    1
d    3
dtype: float64
>>> ser.rank(method=&#39;max&#39;)
a    4
b    2
c    1
d    4
dtype: float64
>>> ser.rank(method=&#39;first&#39;)
a    3
b    2
c    1
d    4
dtype: float64
ログイン後にコピー
ログイン後にコピー
🎜.drop() は新しいオブジェクトを返します。メタ オブジェクトは変更されません。 🎜

インデックス作成とスライス

🎜 Numpy と同様に、pandas も obj[::] によるインデックス作成とスライス、およびブール配列によるフィルタリングをサポートしています。 🎜🎜 ただし、pandas オブジェクトのインデックスは整数に限定されないため、スライス インデックスとして非整数を使用する場合、それが最終的に含まれることに注意してください。 🎜
>>> foo
a    4.5
b    7.2
c   -5.3
d    3.6
dtype: float64
>>> bar
0    4.5
1    7.2
2   -5.3
3    3.6
dtype: float64
>>> foo[:2]
a    4.5
b    7.2
dtype: float64
>>> bar[:2]
0    4.5
1    7.2
dtype: float64
>>> foo[:&#39;c&#39;]
a    4.5
b    7.2
c   -5.3
dtype: float64
ログイン後にコピー
ログイン後にコピー

这里 foo 和 bar 只有 index 不同——bar 的 index 是整数序列。可见当使用整数索引切片时,结果与 Python 列表或 Numpy 的默认状况相同;换成 &#39;c&#39; 这样的字符串索引时,结果就包含了这个边界元素。

另外一个特别之处在于 DataFrame 对象的索引方式,因为他有两个轴向(双重索引)。

可以这么理解:DataFrame 对象的标准切片语法为:.ix[::,::]。ix 对象可以接受两套切片,分别为行(axis=0)和列(axis=1)的方向:

>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.ix[:2,:2]
   Ohio  Texas
a     0      1
c     3      4

[2 rows x 2 columns]
>>> df.ix[&#39;a&#39;,&#39;Ohio&#39;]
0
ログイン後にコピー
ログイン後にコピー

而不使用 ix ,直接切的情况就特殊了:

  • 索引时,选取的是列

  • 切片时,选取的是行

这看起来有点不合逻辑,但作者解释说 “这种语法设定来源于实践”,我们信他。

>>> df[&#39;Ohio&#39;]
a    0
c    3
d    6
Name: Ohio, dtype: int32
>>> df[:&#39;c&#39;]
   Ohio  Texas  California
a     0      1           2
c     3      4           5

[2 rows x 3 columns]
>>> df[:2]
   Ohio  Texas  California
a     0      1           2
c     3      4           5

[2 rows x 3 columns]
ログイン後にコピー
ログイン後にコピー

使用布尔型数组的情况,注意行与列的不同切法(列切法的 : 不能省):

>>> df[&#39;Texas&#39;]>=4
a    False
c     True
d     True
Name: Texas, dtype: bool
>>> df[df[&#39;Texas&#39;]>=4]
   Ohio  Texas  California
c     3      4           5
d     6      7           8

[2 rows x 3 columns]
>>> df.ix[:,df.ix[&#39;c&#39;]>=4]
   Texas  California
a      1           2
c      4           5
d      7           8

[3 rows x 2 columns]
ログイン後にコピー
ログイン後にコピー

算术运算和数据对齐

pandas 最重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象相加时,结果的索引取索引对的并集。自动的数据对齐在不重叠的索引处引入空值,默认为 NaN。

>>> foo = Series({&#39;a&#39;:1,&#39;b&#39;:2})
>>> foo
a    1
b    2
dtype: int64
>>> bar = Series({&#39;b&#39;:3,&#39;d&#39;:4})
>>> bar
b    3
d    4
dtype: int64
>>> foo + bar
a   NaN
b     5
d   NaN
dtype: float64
ログイン後にコピー
ログイン後にコピー

DataFrame 的对齐操作会同时发生在行和列上。

当不希望在运算结果中出现 NA 值时,可以使用前面 reindex 中提到过 fill_value 参数,不过为了传递这个参数,就需要使用对象的方法,而不是操作符:df1.add(df2,fill_value=0)。其他算术方法还有:sub(), div(), mul()

Series 和 DataFrame 之间的算术运算涉及广播,暂时先不讲。

函数应用和映射

Numpy 的 ufuncs(元素级数组方法)也可用于操作 pandas 对象。

当希望将函数应用到 DataFrame 对象的某一行或列时,可以使用 .apply(func, axis=0, args=(), **kwds) 方法。

f = lambda x:x.max()-x.min()
>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.apply(f)
Ohio          6
Texas         6
California    6
dtype: int64
>>> df.apply(f,axis=1)
a    2
c    2
d    2
dtype: int64
ログイン後にコピー
ログイン後にコピー

排序和排名

Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。

若要按值对 Series 进行排序,当使用 .order() 方法,任何缺失值默认都会被放到 Series 的末尾。

在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True) 方法多了一个轴向的选择参数与一个 by 参数,by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数):

>>> df.sort_index(by=&#39;Ohio&#39;)
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.sort_index(by=[&#39;California&#39;,&#39;Texas&#39;])
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.sort_index(axis=1)
   California  Ohio  Texas
a           2     0      1
c           5     3      4
d           8     6      7

[3 rows x 3 columns]
ログイン後にコピー
ログイン後にコピー

排名(Series.rank(method=&#39;average&#39;, ascending=True))的作用与排序的不同之处在于,他会把对象的 values 替换成名次(从 1 到 n)。这时唯一的问题在于如何处理平级项,方法里的 method 参数就是起这个作用的,他有四个值可选:average, min, max, first

>>> ser=Series([3,2,0,3],index=list(&#39;abcd&#39;))
>>> ser
a    3
b    2
c    0
d    3
dtype: int64
>>> ser.rank()
a    3.5
b    2.0
c    1.0
d    3.5
dtype: float64
>>> ser.rank(method=&#39;min&#39;)
a    3
b    2
c    1
d    3
dtype: float64
>>> ser.rank(method=&#39;max&#39;)
a    4
b    2
c    1
d    4
dtype: float64
>>> ser.rank(method=&#39;first&#39;)
a    3
b    2
c    1
d    4
dtype: float64
ログイン後にコピー
ログイン後にコピー

注意在 ser[0]=ser[3] 这对平级项上,不同 method 参数表现出的不同名次。

DataFrame 的 .rank(axis=0, method=&#39;average&#39;, ascending=True) 方法多了个 axis 参数,可选择按行或列分别进行排名,暂时好像没有针对全部元素的排名方法。

统计方法

pandas 对象有一些统计方法。它们大部分都属于约简和汇总统计,用于从 Series 中提取单个值,或从 DataFrame 的行或列中提取一个 Series。

比如 DataFrame.mean(axis=0,skipna=True) 方法,当数据集中存在 NA 值时,这些值会被简单跳过,除非整个切片(行或列)全是 NA,如果不想这样,则可以通过 skipna=False 来禁用此功能:

>>> df
    one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3

[4 rows x 2 columns]
>>> df.mean()
one    3.083333
two   -2.900000
dtype: float64
>>> df.mean(axis=1)
a    1.400
b    1.300
c      NaN
d   -0.275
dtype: float64
>>> df.mean(axis=1,skipna=False)
a      NaN
b    1.300
c      NaN
d   -0.275
dtype: float64
ログイン後にコピー

其他常用的统计方法有: 

欠損データを処理する

is(not)null

このペアのメソッドは、オブジェクトに対して要素レベルのアプリケーションを実行し、通常はブール型のインデックス付けに使用できるブール型の配列を返します。

dropna

########################## ******************** *** ************************
count NA 以外の値の数
describe 概要統計を計算するシリーズまたはDFの列、最大値、および最大値
argmin、argmax 最小値と最大値のインデックス位置(整数)最小値と最大値のインデックス 値
分位数 サンプル分位数 (0 ~ 1)
sum 合計
平均値 平均値
中央値 中央値
mad 平均値
var 分散
std 標準偏差
skew サンプル値の歪度(3次モーメント)から平均絶対分散を計算します
クルト 値のサンプル尖度(4次モーメント)
cumsum サンプル値の累積和
cummin、cummax サンプル値の累積最大値と累積最小値
cumprod サンプル値の累積積
diff 最初の差を計算する(時系列に便利)
pct_change パーセント変化を計算
pandasのNA 主な性能はnpです。 nan、Python の組み込みの None も NA として扱われます。 NA を処理するには、dropna、fillna、isnull、notnull の 4 つの方法があります。
Series の場合、dropna は空ではないデータとインデックス値のみを含む Series を返します。

問題は DataFrame の処理方法にあります。DataFrame が削除されると、少なくとも 1 つの行 (列) が失われる必要があるためです。ここでの解決策は前の解決策と似ていますが、追加のパラメータ dropna(axis=0, how='any', thresh=None) を渡します。これは how パラメータのオプションの値です。どれか、またはすべて。 all は、すべてのスライス要素が NA の場合にのみ行 (列) を破棄します。もう 1 つの興味深いパラメータは、整数型の thresh です。その機能は、たとえば、thresh=3 の場合、連続して少なくとも 3 つの非 NA 値がある場合に保持されます。

fillna

fillna(value=None, method=None, axis=0) 基本的な型に加えて、列の value パラメータにはさまざまな値が入力されます。メソッドの使用方法は前の .reindex() メソッドと同じなので、ここでは詳しく説明しません。

inplace パラメータ

dropna , fillna , isnull , notnull 。 

is(not)null

这一对方法对对象做元素级应用,然后返回一个布尔型数组,一般可用于布尔型索引。 

dropna

对于一个 Series,dropna 返回一个仅含非空数据和索引值的 Series。

问题在于对 DataFrame 的处理方式,因为一旦 drop 的话,至少要丢掉一行(列)。这里的解决方式与前面类似,还是通过一个额外的参数:dropna(axis=0, how='any', thresh=None) ,how 参数可选的值为 any 或者 all。all 仅在切片元素全为 NA 时才抛弃该行(列)。另外一个有趣的参数是 thresh,该参数的类型为整数,它的作用是,比如 thresh=3,会在一行中至少有 3 个非 NA 值时将其保留。

fillna

fillna(value=None, method=None, axis=0) 中的 value 参数除了基本类型外,还可以使用字典,这样可以实现对不同的列填充不同的值。method 的用法与前面 .reindex() 方法相同,这里不再赘述。 

inplace 参数


前面有个点一直没讲,结果整篇示例写下来发现还挺重要的。就是 Series 和 DataFrame 对象的方法中,凡是会对数组作出修改并返回一个新数组的,往往都有一个 replace=False これまで触れていなかった点がありますが、サンプル全体を書いてみて、これが非常に重要であることがわかりました。 Series オブジェクトと DataFrame オブジェクトのメソッドのうち、配列を変更して新しい配列を返すメソッドには、多くの場合 replace=False のオプション パラメーターがあります。手動で True に設定すると、元の配列を置き換えることができます。

以上がパンダの基本の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

一般的なパンダのインストール問題の解決: インストール エラーの解釈と解決策 一般的なパンダのインストール問題の解決: インストール エラーの解釈と解決策 Feb 19, 2024 am 09:19 AM

Pandas インストール チュートリアル: 一般的なインストール エラーとその解決策の分析、特定のコード サンプルが必要です はじめに: Pandas は、データ クリーニング、データ処理、およびデータ視覚化で広く使用されている強力なデータ分析ツールであるため、この分野で高く評価されていますデータサイエンスのただし、環境構成と依存関係の問題により、パンダのインストール時に問題やエラーが発生する可能性があります。この記事では、パンダのインストール チュートリアルを提供し、いくつかの一般的なインストール エラーとその解決策を分析します。 1.パンダをインストールする

pandasを使用してtxtファイルを正しく読み取る方法 pandasを使用してtxtファイルを正しく読み取る方法 Jan 19, 2024 am 08:39 AM

pandas を使用して txt ファイルを正しく読み取る方法には、特定のコード サンプルが必要です。パンダは、広く使用されている Python データ分析ライブラリです。CSV ファイル、Excel ファイル、SQL データベースなど、さまざまな種類のデータの処理に使用できます。同時に、txt ファイルなどのテキスト ファイルを読み取るために使用することもできます。ただし、txt ファイルを読み取るときに、エンコードの問題や区切り文字の問題など、いくつかの問題が発生することがあります。この記事ではパンダを使ってtxtを正しく読む方法を紹介します。

CSV ファイルを読み取り、pandas を使用してデータ分析を実行する CSV ファイルを読み取り、pandas を使用してデータ分析を実行する Jan 09, 2024 am 09:26 AM

Pandas は、さまざまな種類のデータ ファイルを簡単に読み取り、処理できる強力なデータ分析ツールです。その中でも、CSV ファイルは最も一般的でよく使用されるデータ ファイル形式の 1 つです。この記事では、Pandas を使用して CSV ファイルを読み取り、データ分析を実行する方法と、具体的なコード例を紹介します。 1. 必要なライブラリをインポートする まず、以下に示すように、Pandas ライブラリと必要になる可能性のあるその他の関連ライブラリをインポートする必要があります。 importpandasaspd 2. Pan を使用して CSV ファイルを読み取ります。

Pythonパンダのインストール方法 Pythonパンダのインストール方法 Nov 22, 2023 pm 02:33 PM

Python は、pip を使用するか、conda を使用するか、ソース コードから、および IDE 統合パッケージ管理ツールを使用してパンダをインストールできます。詳細な紹介: 1. pip を使用し、ターミナルまたはコマンド プロンプトで pip install pandas コマンドを実行してパンダをインストールします; 2. conda を使用し、ターミナルまたはコマンド プロンプトで conda install pandas コマンドを実行してパンダをインストールします; 3. ソース コードからインストールなど。

Pythonでパンダをインストールする方法 Pythonでパンダをインストールする方法 Dec 04, 2023 pm 02:48 PM

Python でパンダをインストールする手順: 1. ターミナルまたはコマンド プロンプトを開きます; 2. 「pip install pandas」コマンドを入力してパンダ ライブラリをインストールします; 3. インストールが完了するまで待ちます。パンダ ライブラリをインポートして使用できるようになりますPython スクリプト内; 4. 使用する 特定の仮想環境です。パンダをインストールする前に、対応する仮想環境をアクティブにしてください; 5. 統合開発環境を使用している場合は、「import pandas as pd」コードをパンダライブラリをインポートします。

Pandas は SQL データベースからデータを簡単に読み取ります Pandas は SQL データベースからデータを簡単に読み取ります Jan 09, 2024 pm 10:45 PM

データ処理ツール: Pandas は SQL データベース内のデータを読み取り、特定のコード サンプルが必要です。データ量が増加し続け、その複雑さが増すにつれて、データ処理は現代社会の重要な部分となっています。データ処理プロセスにおいて、Pandas は多くのデータ アナリストや科学者にとって好まれるツールの 1 つとなっています。この記事では、Pandas ライブラリを使用して SQL データベースからデータを読み取る方法を紹介し、いくつかの具体的なコード例を示します。 Pandas は、Python をベースにした強力なデータ処理および分析ツールです。

pandas を使用して txt ファイルを読み取るための実践的なヒント pandas を使用して txt ファイルを読み取るための実践的なヒント Jan 19, 2024 am 09:49 AM

pandas を使用して txt ファイルを読み取るための実践的なヒント、具体的なコード例が必要です データ分析とデータ処理では、txt ファイルは一般的なデータ形式です。 pandas を使用して txt ファイルを読み取ると、高速で便利なデータ処理が可能になります。この記事では、パンダをより効果的に使用して txt ファイルを読み取るのに役立ついくつかの実践的なテクニックを、具体的なコード例とともに紹介します。区切り文字付きの txt ファイルの読み取りパンダを使用して区切り文字付きの txt ファイルを読み取る場合は、read_c を使用できます。

Pandas の効率的なデータ重複排除方法を明らかに: 重複データをすばやく削除するためのヒント Pandas の効率的なデータ重複排除方法を明らかに: 重複データをすばやく削除するためのヒント Jan 24, 2024 am 08:12 AM

Pandas 重複排除メソッドの秘密: データを重複排除するための高速かつ効率的な方法 (特定のコード例が必要) データの分析と処理のプロセスでは、データの重複が頻繁に発生します。データが重複すると分析結果が誤解される可能性があるため、重複排除は非常に重要な手順です。強力なデータ処理ライブラリである Pandas では、データ重複排除を実現するためのさまざまな方法が提供されています。この記事では、一般的に使用されるいくつかの重複排除方法を紹介し、具体的なコード例を添付します。単一列に基づく重複排除の最も一般的なケースは、特定の列の値が重複しているかどうかに基づいています。

See all articles