1. 程式人生 > >pandas基本介紹-【老魚學pandas】

pandas基本介紹-【老魚學pandas】

time map data axis 1.0 分享 平均值 rain values

前面我們學習了numpy,現在我們來學習一下pandas。
Python Data Analysis Library 或 pandas 主要用於處理類似excel一樣的數據格式,其中有表頭、數據序列號以及實際的數據,而numpy就僅僅包含了實際的數據。

安裝

直接輸入:

pip3 install pandas

最基本用法

import pandas as pd
s = pd.Series([1, 2, 5, 6])
print(s)

輸出:

0    1
1    2
2    5
3    6
dtype: int64

我們可以看到pandas自動添加了數據的序列號。

自定義索引項和列名

import
pandas as pd import numpy as np # 創建一個日期索引項 dates = pd.date_range("2017-01-04", periods=6) print("dates=", dates) # 創建一個類似excel表格一樣的數據表,其中索引項為日期索引,列名為:a,b,c,d data = pd.DataFrame(np.random.rand(6, 4), index=dates, columns=["a", "b", "c", "d"
]) print("data=") print(data)

輸出:

dates= DatetimeIndex(['2017-01-04', '2017-01-05', '2017-01-06', '2017-01-07',
               '2017-01-08', '2017-01-09'],
              dtype='datetime64[ns]', freq='D')
data=
                   a         b         c         d
2017-01-04
0.637641 0.756613 0.297506 0.692492 2017-01-05 0.319457 0.401690 0.550955 0.862642 2017-01-06 0.685646 0.007546 0.376774 0.735220 2017-01-07 0.767868 0.000718 0.799336 0.428242 2017-01-08 0.004777 0.292726 0.227704 0.117925 2017-01-09 0.946817 0.153245 0.154102 0.165621

看,輸出了一個比較規整的電子表格。
上面這些命令包括需要哪些參數不需要特別記憶,如果你用idea的話會自動給你提示的。
技術分享圖片

默認索引號和列名

如果我們沒有指定索引號和列名,pandas會自動以0,1,2這樣的自然數來定義我們的索引號和列名,例如:

import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.rand(6, 4))
print("data=")
print(data)

輸出:

data=
          0         1         2         3
0  0.515289  0.900554  0.490999  0.941186
1  0.706116  0.267078  0.870968  0.904068
2  0.002414  0.648418  0.579449  0.827671
3  0.473538  0.640514  0.564209  0.040902
4  0.052849  0.372015  0.613814  0.516763
5  0.484220  0.479558  0.007722  0.216598

map方式創建DataFrame

可以用一個map方式來創建DataFrame,這樣相當於map中的key為列名,value為此列的數據列表:

import pandas as pd
import numpy as np
data = pd.DataFrame({
    "A": np.array([1, 2, 3, 5]),
    "B": ["test", "train", "go", "java"],
    "C": "dog",
    "D": 12
})
print("data=")
print(data)

輸出為:

data=
   A      B    C   D
0  1   test  dog  12
1  2  train  dog  12
2  3     go  dog  12
3  5   java  dog  12

查看每列的數據類型

我想知道pandas中每列的數據類型,有點像了解數據庫中表的字段類型,這可以通過dtypes屬性獲得:

import pandas as pd
import numpy as np
data = pd.DataFrame({
    "A": np.array([1, 2, 3, 5]),
    "B": ["test", "train", "go", "java"],
    "C": "dog",
    "D": 12
})
print(data.dtypes)

輸出:

A     int32
B    object
C    object
D     int64
dtype: object

獲得列名和索引

想要獲得pandas中的列名和索引,只要使用columns和index屬性就可以:

import pandas as pd
import numpy as np
data = pd.DataFrame({
    "A": np.array([1, 2, 3, 5]),
    "B": ["test", "train", "go", "java"],
    "C": "dog",
    "D": 12
})

print("列名:", data.columns)
print("索引:", data.index)

輸出:

列名: Index(['A', 'B', 'C', 'D'], dtype='object')
索引: RangeIndex(start=0, stop=4, step=1)

使用describe()函數對數據快速統計匯總

import pandas as pd
import numpy as np
data = pd.DataFrame({
    "A": np.array([1, 2, 3, 5]),
    "B": ["test", "train", "go", "java"],
    "C": "dog",
    "D": 12
})

print(data.describe())

輸出:

              A     D
count  4.000000   4.0
mean   2.750000  12.0
std    1.707825   0.0
min    1.000000  12.0
25%    1.750000  12.0
50%    2.500000  12.0
75%    3.500000  12.0
max    5.000000  12.0

其中就對可計算的列進行計數、求平均值、方差、最小值、最大值等。

pandas轉置

相當於把電子表格中的行和列翻轉一下。

import pandas as pd
import numpy as np
data = pd.DataFrame({
    "A": np.array([1, 2, 3, 5]),
    "B": ["test", "train", "go", "java"],
    "C": "dog",
    "D": 12
})

print(data.T)

輸出:

      0      1    2     3
A     1      2    3     5
B  test  train   go  java
C   dog    dog  dog   dog
D    12     12   12    12

這樣索引項就變成了原先數據集中的列名。

排序

sort_index()可以按照索引項進行排序。

import pandas as pd
import numpy as np
data = pd.DataFrame({
    "A": np.array([1, 2, 3, 5]),
    "B": ["test", "train", "go", "java"],
    "C": "dog",
    "D": 12
})
# 按照索引項進行倒排
print("按照索引項進行倒排:")
print(data.sort_index(ascending=False))

# 對列名進行倒排
print("對列名進行倒排:")
print(data.sort_index(axis=1, ascending=False))

輸出:

按照索引項進行倒排:
   A      B    C   D
3  5   java  dog  12
2  3     go  dog  12
1  2  train  dog  12
0  1   test  dog  12
對列名進行倒排:
    D    C      B  A
0  12  dog   test  1
1  12  dog  train  2
2  12  dog     go  3
3  12  dog   java  5

排序中的數據會跟著列或索引項進行調換順序,因此數據不會錯亂。

按照值排序

使用sort_values()函數對值進行排序,其中可以指定按照哪一列的數據進行排序的:

import pandas as pd
import numpy as np
data = pd.DataFrame({
    "A": np.array([1, 2, 3, 5]),
    "B": ["test", "train", "go", "java"],
    "C": "dog",
    "D": 12
})

print(data.sort_values(by='B'))

輸出:

   A      B    C   D
2  3     go  dog  12
3  5   java  dog  12
0  1   test  dog  12
1  2  train  dog  12

pandas基本介紹-【老魚學pandas】