목차
Series
DataFrame
对象属性
重新索引
删除指定轴上的项
索引和切片
Reindex
지정된 축의 항목 삭제
인덱싱 및 슬라이싱
算术运算和数据对齐
函数应用和映射
排序和排名
统计方法
누락된 데이터 처리
is(not)null
dropna
fillna
inplace 参数
null이 아님(not)null

팬더 기본 사항

Jun 23, 2017 pm 03:54 PM
pandas 베이스

pandas는 고급 데이터 구조와 도구가 포함된 Numpy 기반의 데이터 분석 패키지입니다.

핵심이 ndarray인 Numpy와 유사하게 pandas도 Series와 DataFrame의 두 가지 핵심 데이터 구조를 중심으로 작동합니다. Series와 DataFrame은 각각 1차원 시퀀스와 2차원 테이블 구조에 해당합니다. pandas의 기존 import 방법은 다음과 같습니다.

from pandas import Series,DataFrame
import pandas as pd
로그인 후 복사

Series


Series는 고정 길이 순서 사전으로 간주할 수 있습니다. 기본적으로 모든 1차원 데이터를 사용하여 시리즈 개체를 구성할 수 있습니다.

>>> 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 개체에는 위 예의 왼쪽 및 오른쪽 열에 해당하는 인덱스와 값이라는 두 가지 주요 속성이 포함되어 있습니다. 생성자에 전달되는 것은 목록이므로 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 개체의 요소는 지정된 인덱스에 따라 엄격하게 구성됩니다. 즉, 데이터 매개변수에 키-값 쌍이 있는 경우 Series 개체에 포함된 키만 인덱스가 사용되며 데이터에 응답 키가 없으면 NaN 값이 제공되더라도 키가 추가됩니다. 🎜🎜시리즈의 인덱스와 값의 요소 사이에는 대응 관계가 있지만 이는 사전의 매핑과 다릅니다. 인덱스와 값은 실제로 여전히 독립적인 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은 정렬된 열 집합을 포함하는 테이블 형식 데이터 구조입니다( index), 각 열은 서로 다른 값 유형일 수 있습니다(dtype이 하나만 있을 수 있는 ndarray와는 다름). 기본적으로 DataFrame은 동일한 인덱스를 공유하는 시리즈 컬렉션으로 생각할 수 있습니다. 🎜🎜DataFrame의 구성 방법은 여러 개의 1차원 데이터 소스를 동시에 수용할 수 있다는 점을 제외하면 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 역할의 인덱스 역할을 하는 것이 아니라 시리즈의 "name" 속성 역할을 합니다. 여기서 생성된 인덱스는 여전히 "01234"입니다. 🎜🎜더 완전한 DataFrame 생성자 매개변수는 다음과 같습니다: DataFrame(data=None,index=None,coloumns=None), 열은 "이름": 🎜
>>> 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 행 기반 작업과 열 기반 작업은 기본적으로 균형을 이루고 추출된 모든 열은 시리즈입니다. 🎜🎜객체 속성🎜🎜

Reindex

🎜Series 객체의 재인덱싱은 .reindex(index=None,**kwargs) 메서드를 통해 구현됩니다. **kwargs에는 일반적으로 사용되는 두 가지 매개변수가 있습니다: 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 = pad, bfill = back fill, 각각 보간 중 앞으로 또는 뒤로 값을 나타냄) 🎜🎜DataFrame 객체 색인 생성 방법은 .reindex(index=None,columns=None,**kwargs)입니다. 열을 인덱싱하는 데 사용되는 Series보다 선택적 열 매개 변수가 하나만 더 있습니다. 보간 방법 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[::]를 통한 인덱싱 및 슬라이싱은 물론 부울 배열을 통한 필터링도 지원합니다. 🎜🎜단, 팬더 객체의 인덱스는 정수로 제한되지 않기 때문에 정수가 아닌 값을 슬라이스 인덱스로 사용하는 경우 최종적으로 포함된다는 점에 유의해야 합니다. 🎜
>>> 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
로그인 후 복사

其他常用的统计方法有: 

##################### ************************ *** ************************
count NA가 아닌 값의 수
describe 요약 통계 계산 Series 또는 DF 열의 경우
min , max 최소값 및 최대값
argmin , argmax 최소값 및 최대값의 인덱스 위치(정수)
idxmin , idxmax the 최소값과 최대값의 인덱스 값
Quantile Sample Quantile(0~1)
sum Sum
mean mean
median 중앙값
mad 평균으로부터 평균 절대 분산을 계산합니다
var variance
std 표준 편차
skew 왜곡(세 번째 순간)
커트 값의 샘플 첨도(네 번째 순간) ​​
cumsum 샘플 값의 누적 합계
cummin, cummax 샘플 값의 누적 최대값 및 누적 최소값
cumprod 샘플 값 누적 곱
diff 첫 번째 차이 계산(시계열에 유용함)
pct_change 변화율 계산

누락된 데이터 처리


팬더의 NA 주요 성능은 np입니다. nan 및 Python의 내장 None도 NA로 처리됩니다.

NA를 처리하는 방법에는 dropna, fillna, isnull, notnull 네 가지가 있습니다. 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

null이 아님(not)null

이 메서드 쌍은 개체에서 요소 수준 응용 프로그램을 수행한 다음 일반적으로 부울 인덱싱에 사용할 수 있는 부울 배열을 반환합니다. 🎜

dropna

🎜시리즈의 경우 dropna는 비어 있지 않은 데이터와 인덱스 값만 포함하는 시리즈를 반환합니다. 🎜🎜문제는 DataFrame이 처리되는 방식에 있습니다. 일단 삭제되면 적어도 하나의 행(열)이 손실되어야 하기 때문입니다. 여기의 솔루션은 이전 솔루션과 유사하지만 여전히 추가 매개변수인 dropna(axis=0, How='any', thresh=None) , How 매개변수의 선택적 값을 전달합니다. 전부 또는 전부. all은 모든 슬라이스 요소가 NA인 경우에만 행(열)을 삭제합니다. 또 다른 흥미로운 매개변수는 정수 유형인 thresh입니다. 이 매개변수의 기능은 예를 들어 thresh=3이며 연속적으로 NA가 아닌 값이 3개 이상 있을 때 유지됩니다. 🎜

fillna

🎜fillna(value=None, method=None, axis=0) 기본 유형 외에도 열의 값 매개변수는 다양한 값으로 채워집니다. 메소드의 사용법은 이전 .reindex() 메소드와 동일하므로 여기서는 자세히 설명하지 않겠습니다. 🎜🎜inplace 매개변수 🎜🎜🎜 앞서 언급하지 않은 점이 있는데, 전체 예제를 작성하고 나니 꽤 중요하다는 걸 깨달았습니다. Series 및 DataFrame 개체의 메서드 중 배열을 수정하고 새 배열을 반환하는 메서드에는 replace=False라는 선택적 매개 변수가 있는 경우가 많습니다. 수동으로 True로 설정하면 원래 배열을 교체할 수 있습니다. 🎜

위 내용은 팬더 기본 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

일반적인 Pandas 설치 문제 해결: 설치 오류에 대한 해석 및 해결 방법 일반적인 Pandas 설치 문제 해결: 설치 오류에 대한 해석 및 해결 방법 Feb 19, 2024 am 09:19 AM

Pandas 설치 튜토리얼: 일반적인 설치 오류 및 해결 방법 분석, 구체적인 코드 예제가 필요합니다. 소개: Pandas는 데이터 정리, 데이터 처리 및 데이터 시각화에 널리 사용되는 강력한 데이터 분석 도구이므로 현장에서 높은 평가를 받고 있습니다. 데이터 과학의 . 그러나 환경 구성 및 종속성 문제로 인해 Pandas를 설치할 때 몇 가지 어려움과 오류가 발생할 수 있습니다. 이 기사에서는 Pandas 설치 튜토리얼을 제공하고 몇 가지 일반적인 설치 오류와 해결 방법을 분석합니다. 1. 팬더 설치

Pandas를 사용하여 txt 파일을 올바르게 읽는 방법 Pandas를 사용하여 txt 파일을 올바르게 읽는 방법 Jan 19, 2024 am 08:39 AM

Pandas를 사용하여 txt 파일을 올바르게 읽으려면 특정 코드 예제가 필요합니다. Pandas는 널리 사용되는 Python 데이터 분석 라이브러리로 CSV 파일, Excel 파일, SQL 데이터베이스 등을 포함하여 다양한 데이터 유형을 처리하는 데 사용할 수 있습니다. 동시에 txt 파일과 같은 텍스트 파일을 읽는 데에도 사용할 수 있습니다. 그러나 txt 파일을 읽을 때 인코딩 문제, 구분 기호 문제 등과 같은 몇 가지 문제가 발생할 수 있습니다. 이 기사에서는 팬더를 사용하여 txt를 올바르게 읽는 방법을 소개합니다.

Pandas를 사용하여 CSV 파일을 읽고 데이터 분석을 수행합니다. Pandas를 사용하여 CSV 파일을 읽고 데이터 분석을 수행합니다. Jan 09, 2024 am 09:26 AM

Pandas는 다양한 유형의 데이터 파일을 쉽게 읽고 처리할 수 있는 강력한 데이터 분석 도구입니다. 그중 CSV 파일은 가장 일반적이고 일반적으로 사용되는 데이터 파일 형식 중 하나입니다. 이 기사에서는 Pandas를 사용하여 CSV 파일을 읽고 데이터 분석을 수행하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 필요한 라이브러리 가져오기 먼저 아래와 같이 필요할 수 있는 Pandas 라이브러리 및 기타 관련 라이브러리를 가져와야 합니다. importpandasasspd 2. Pan을 사용하여 CSV 파일 읽기

파이썬 팬더 설치 방법 파이썬 팬더 설치 방법 Nov 22, 2023 pm 02:33 PM

Python은 pip, conda, 소스 코드 및 IDE 통합 패키지 관리 도구를 사용하여 pandas를 설치할 수 있습니다. 자세한 소개: 1. pip를 사용하고 터미널이나 명령 프롬프트에서 pip install pandas 명령을 실행하여 pandas를 설치합니다. 2. conda를 사용하고 터미널이나 명령 프롬프트에서 conda install pandas 명령을 실행하여 pandas를 설치합니다. 설치 등.

Python에 팬더를 설치하는 방법 Python에 팬더를 설치하는 방법 Dec 04, 2023 pm 02:48 PM

Python에서 pandas를 설치하는 단계: 1. 터미널 또는 명령 프롬프트를 엽니다. 2. "pip install pandas" 명령을 입력하여 pandas 라이브러리를 설치합니다. 3. 설치가 완료될 때까지 기다리면 pandas 라이브러리를 가져와 사용할 수 있습니다. 4. 사용 pandas를 설치하기 전에 해당 가상 환경을 활성화해야 합니다. 5. 통합 개발 환경을 사용하는 경우 "import pandas as pd" 코드를 추가할 수 있습니다. 팬더 라이브러리를 가져옵니다.

Pandas는 SQL 데이터베이스에서 데이터를 쉽게 읽습니다. Pandas는 SQL 데이터베이스에서 데이터를 쉽게 읽습니다. Jan 09, 2024 pm 10:45 PM

데이터 처리 도구: Pandas는 SQL 데이터베이스에서 데이터를 읽고 특정 코드 예제가 필요합니다. 데이터 양이 계속 증가하고 복잡성이 증가함에 따라 데이터 처리는 현대 사회에서 중요한 부분이 되었습니다. 데이터 처리 프로세스에서 Pandas는 많은 데이터 분석가와 과학자가 선호하는 도구 중 하나가 되었습니다. 이 문서에서는 Pandas 라이브러리를 사용하여 SQL 데이터베이스에서 데이터를 읽는 방법을 소개하고 몇 가지 특정 코드 예제를 제공합니다. Pandas는 Python을 기반으로 한 강력한 데이터 처리 및 분석 도구입니다.

Pandas를 사용하여 txt 파일을 읽는 실용적인 팁 Pandas를 사용하여 txt 파일을 읽는 실용적인 팁 Jan 19, 2024 am 09:49 AM

Pandas를 사용하여 txt 파일을 읽는 실용적인 팁, 데이터 분석 및 데이터 처리에서 txt 파일은 일반적인 데이터 형식입니다. Pandas를 사용하여 txt 파일을 읽으면 빠르고 편리한 데이터 처리가 가능합니다. 이 기사에서는 특정 코드 예제와 함께 pandas를 사용하여 txt 파일을 더 잘 읽는 데 도움이 되는 몇 가지 실용적인 기술을 소개합니다. 구분 기호가 있는 txt 파일 읽기 팬더를 사용하여 구분 기호가 있는 txt 파일을 읽을 때 read_c를 사용할 수 있습니다.

Pandas의 효율적인 데이터 중복 제거 방법 공개: 중복 데이터를 빠르게 제거하는 팁 Pandas의 효율적인 데이터 중복 제거 방법 공개: 중복 데이터를 빠르게 제거하는 팁 Jan 24, 2024 am 08:12 AM

Pandas 중복 제거 방법의 비밀: 데이터를 중복 제거하는 빠르고 효율적인 방법으로, 데이터 분석 및 처리 과정에서 데이터 중복이 자주 발생합니다. 중복된 데이터는 분석 결과를 오도할 수 있으므로 중복 제거는 매우 중요한 단계입니다. 강력한 데이터 처리 라이브러리인 Pandas는 데이터 중복 제거를 달성하기 위한 다양한 방법을 제공합니다. 이 기사에서는 일반적으로 사용되는 중복 제거 방법을 소개하고 특정 코드 예제를 첨부합니다. 단일 컬럼 기반 중복 제거의 가장 일반적인 경우는 특정 컬럼의 값이 중복되는지 여부에 따른 것입니다.

See all articles