前面我們學習了numpy,現在我們來學習一下pandas。 Python Data Analysis Library 或 pandas 主要用於處理類似excel一樣的數據格式,其中有表頭、數據序列號以及實際的數據,而numpy就僅僅包含了實際的數據。 安裝 直接輸入: 最基本用法 輸出: 我們可以 ...
前面我們學習了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