【轉】Pandas學習筆記(一)基本介紹

Pandas學習筆記系列:html

原文: https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/3-1-pd-intro/python

Numpy 和 Pandas 有什麼不一樣

若是用 python 的列表和字典來做比較, 那麼能夠說 Numpy 是列表形式的,沒有數值標籤,而 Pandas 就是字典形式。Pandas是基於Numpy構建的,讓Numpy爲中心的應用變得更加簡單。git

要使用pandas,首先須要瞭解他主要兩個數據結構:SeriesDataFramegithub

Series

import pandas as pd
import numpy as np
s = pd.Series([1,3,6,np.nan,44,1])

print(s)

>>>
0     1.0
1     3.0
2     6.0
3     NaN
4    44.0
5     1.0
dtype: float64

Series的字符串表現形式爲:索引在左邊,值在右邊。因爲咱們沒有爲數據指定索引。因而會自動建立一個0到N-1(N爲長度)的整數型索引。數據結構

DataFrame

DataFrame是一個表格型的數據結構,它包含有一組有序的列,每列能夠是不一樣的值類型(數值,字符串,布爾值等)。DataFrame既有行索引也有列索引, 它能夠被看作由Series組成的大字典。dom

用下面的例子簡單理解就是DataFramecolumns,index,values組成:學習

  • columns: ['a','b','c','d']
  • index:dates (日期)
  • values:np.random.randn(6,4)
dates = pd.date_range('20160101',periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])

print(df)

>>>
                   a         b         c         d
2016-01-01 -0.253065 -2.071051 -0.640515  0.613663
2016-01-02 -1.147178  1.532470  0.989255 -0.499761
2016-01-03  1.221656 -2.390171  1.862914  0.778070
2016-01-04  1.473877 -0.046419  0.610046  0.204672
2016-01-05 -1.584752 -0.700592  1.487264 -1.778293
2016-01-06  0.633675 -1.414157 -0.277066 -0.442545

咱們能夠根據每個不一樣的索引來挑選數據, 好比挑選 b 的元素:spa

print(df['b'])

>>>
2016-01-01   -2.071051
2016-01-02    1.532470
2016-01-03   -2.390171
2016-01-04   -0.046419
2016-01-05   -0.700592
2016-01-06   -1.414157
Freq: D, Name: b, dtype: float64

DataFrame 的一些簡單運用

不指定columns和index

咱們在建立一組沒有給定行標籤和列標籤的數據 df1:code

df1 = pd.DataFrame(np.arange(12).reshape((3,4)))
print(df1)

>>>
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

這樣,他就會採起默認的從0開始 index.htm

指定columns

還有一種生成 df 的方法, 以下 df2:

df2 = pd.DataFrame({'A' : 1.,
                    'B' : pd.Timestamp('20130102'),
                    'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                    'D' : np.array([3] * 4,dtype='int32'),
                    'E' : pd.Categorical(["test","train","test","train"]),
                    'F' : 'foo'})
                    
print(df2)

>>>
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo

這種方法能對每一列的數據進行特殊對待.

dtypes

若是想要查看數據中的類型, 咱們能夠用 dtypes 這個屬性:

print(df2.dtypes)

>>>
df2.dtypes
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object

index

若是想看對列的序號:

print(df2.index)

>>>
Int64Index([0, 1, 2, 3], dtype='int64')

columns

一樣, 每種數據的名稱也能看到:

print(df2.columns)

# Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')

values

若是隻想看全部df2的值:

print(df2.values)

>>>
array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
       [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'],
       [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
       [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']], dtype=object)

describe

想知道數據的總結, 能夠用 describe():

df2.describe()

>>>
         A    C    D
count  4.0  4.0  4.0
mean   1.0  1.0  3.0
std    0.0  0.0  0.0
min    1.0  1.0  3.0
25%    1.0  1.0  3.0
50%    1.0  1.0  3.0
75%    1.0  1.0  3.0
max    1.0  1.0  3.0

transpose

若是想翻轉數據, transpose:

print(df2.T)

>>>                  
0                    1                    2  \
A                    1                    1                    1   
B  2013-01-02 00:00:00  2013-01-02 00:00:00  2013-01-02 00:00:00   
C                    1                    1                    1   
D                    3                    3                    3   
E                 test                train                 test   
F                  foo                  foo                  foo   

                     3  
A                    1  
B  2013-01-02 00:00:00  
C                    1  
D                    3  
E                train  
F                  foo

sort

  • 若是想對數據的 index 進行排序並輸出:
print(df2.sort_index(axis=1, ascending=False))

>>>
     F      E  D    C          B    A
0  foo   test  3  1.0 2013-01-02  1.0
1  foo  train  3  1.0 2013-01-02  1.0
2  foo   test  3  1.0 2013-01-02  1.0
3  foo  train  3  1.0 2013-01-02  1.0
  • 若是是對數據值 value 排序輸出:
print(df2.sort_values(by='B'))

>>>
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo


MARSGGBO原創


若有意合做,歡迎私戳

郵箱:marsggbo@foxmail.com

2019-10-30 10:51:00

相關文章
相關標籤/搜索