pandas是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務而創(chuàng)建的
#對數(shù)組處理
#兼容各種數(shù)據(jù)庫
#支持各種分析算法
創(chuàng)建Series,Series:索引,數(shù)據(jù)查看 / 重新索引 / 對齊 / 添加顽铸、修改譬涡、刪除值
Series 數(shù)據(jù)結構
#Series 是帶有標簽的一維數(shù)組闪幽,可以保存任何數(shù)據(jù)類型(整數(shù),字符串涡匀,浮點數(shù)盯腌,Python對象等),軸標簽統(tǒng)稱為索引
s = pd.Series(np.random.rand(5))
# .index查看series索引,類型為rangeindex
# .values查看series值陨瘩,類型是ndarray
# 核心:series相比于ndarray腕够,是一個自帶索引index的數(shù)組 → 一維數(shù)組 + 對應索引
# 所以當只看series的值的時候,就是一個ndarray
# series和ndarray較相似拾酝,索引切片功能差別不大
# series和dict相比燕少,series更像一個有順序的字典(dict本身不存在順序),其索引原理s與字典相似(一個用key蒿囤,一個用index)
創(chuàng)建Series
1, 由字典創(chuàng)建客们,字典的key就是index,values就是values
dic = {'a':1 ,'b':2 , 'c':3, '4':4, '5':5}
s = pd.Series(dic)
print(s)
2,由數(shù)組創(chuàng)建(一維數(shù)組)
arr = np.random.randn(5)
s = pd.Series(arr)
print(arr)
print(s)
# 默認index是從0開始,步長為1的數(shù)字
s = pd.Series(arr, index = ['a','b','c','d','e'],dtype = np.object)
# index參數(shù):設置index底挫,長度保持一致
# dtype參數(shù):設置數(shù)值類型
s2 = pd.Series(np.random.randn(5),name = 'test')
# name為Series的一個參數(shù)恒傻,創(chuàng)建一個數(shù)組的 名稱(起名字)
# .name方法:輸出數(shù)組的名稱,輸出格式為str建邓,如果沒用定義輸出名稱盈厘,輸出為None
s3 = s2.rename('hehehe')
# .rename()重命名一個數(shù)組的名稱,并且新指向一個數(shù)組官边,原數(shù)組不變
3沸手,由標量創(chuàng)建
s = pd.Series(10, index = range(4))
# 如果data是標量值,則必須提供索引注簿。該值會重復契吉,來匹配索引的長度
Pandas數(shù)據(jù)結構Series:索引
位置下標 / 標簽索引 / 切片索引 / 布爾型索引
print(s[0],type(s[0]),s[0].dtype)#位置下標
print(s['a'],type(s['a']),s['a'].dtype)#標簽索引
print(s1[1:4],s1[4])????? print(s2['a':'c'],s2['c'])切片索引
bs1 = s > 50
bs2 = s.isnull()
bs3 = s.notnull()# 數(shù)組做判斷之后,返回的是一個由布爾值組成的新的數(shù)組
# .isnull() / .notnull() 判斷是否為空值 (None代表空值诡渴,NaN代表有問題的數(shù)值捐晶,兩個都會識別為空值)
print(s[s > 50])
print(s[bs3])
# 布爾型索引方法:用[判斷條件]表示,其中判斷條件可以是 一個語句妄辩,或者是 一個布爾型數(shù)組惑灵!
數(shù)據(jù)查看 / 重新索引 / 對齊 / 添加、修改眼耀、刪除值
s = pd.Series(np.random.rand(50))
print(s.head(10))
print(s.tail())
# .head()查看頭部數(shù)據(jù)
# .tail()查看尾部數(shù)據(jù)
# 默認查看5條
?重新索引reindex
# .reindex將會根據(jù)索引重新排序英支,如果當前索引不存在,則引入缺失值
s = pd.Series(np.random.rand(3), index = ['a','b','c'])
print(s)
s1 = s.reindex(['c','b','a','d'])
print(s1)
# .reindex()中也是寫列表
# 這里'd'索引不存在畔塔,所以值為NaN
對齊
s1 = pd.Series(np.random.rand(3), index = ['Jack','Marry','Tom'])
s2 = pd.Series(np.random.rand(3), index = ['Wang','Jack','Marry'])
# Series 和 ndarray 之間的主要區(qū)別是潭辈,Series 上的操作會根據(jù)標簽自動對齊
# index順序不會影響數(shù)值計算鸯屿,以標簽來計算
# 空值和任何值計算結果扔為空值
刪除:.drop
s = pd.Series(np.random.rand(5), index = list('ngjur'))
s1 = s.drop('n')
s2 = s.drop(['g','j'])
# drop 刪除元素之后返回副本(inplace=False)
添加
s3 = s1.append(s2)