人生苦短,我用python
import pandas as pd
import numpy as np
"""序列(series):可以理解成r語言中的向量,python中的列表、元組的高階版本。
為什麼說是高階,因為序列與上期介紹的一維陣列類似,具有更好的廣播效應,
既可以與乙個標量進行運算,又可以進行元素級函式
"""ls_a=[1,3,5]
seriesl=pd.series(ls_a)
seriesl+10
print(seriesl+10)
"""return:
0 11
1 13
2 15
"""#序列的索引--位置索引
np.random.seed(1)
se=pd.series(np.random.randint(size=5,low=1,high=10))
print(se)
print(se[0]) #取第乙個元素
print(se[1:3])#取第2、3個元素
print(se[::2])#依次取數,步數為2
#序列索引--布林索引
np.random.seed(23)
se_bool=pd.series(np.random.randint(size=5,low=1,high=100))
print(se_bool)
"""0 84
1 41
2 74
3 55
4 32
dtype: int32
"""print(se_bool[se_bool>=70])#取出大於等於70的值
"""0 84
2 74
dtype: int32
"""print(se_bool[se_bool>=40][se_bool<=50]) #取出40~50之間的值
"""1 41
dtype: int32
""""""
在r語言中乙個向量的元素是否包含於另乙個向量,可以使用%in%函式進行判斷,
python中也有類似的方法。對於乙個一維陣列,inld函式實現該功能;
對於乙個序列,isin函式可以實現上述所說功能
"""array_num1=np.array([3,5,6,8])
array_num2=np.array([17,29,34,8])
print(np.in1d(array_num1,array_num2))
'''return:[false false false true]
array_num1包含array_num2的8,所以為true
'''se_str1=pd.series(["a","s","d","f"])
se_str2=pd.series(["z","s","m","d"])
print(np.isin(se_str1,se_str2))
"""return:[false true true false]
"""#序列去重及水平統計
np.random.seed(10)
se_unique=np.random.randint(size=1000,low=1,high=4)
#去重print("去重:")
print(pd.unique(se_unique))
"""return:
去重:[2 1 3]
"""#水平統計
print("水平統計")
print(pd.value_counts(se_unique))
'''水平統計
3 342
2 334
1 324
'''np.random.seed(2)
se_sort=pd.series(np.random.normal(size=4))
#按序列的索引排序--降序排序
print("按序列的索引排序--降序排序")
print(se_sort.sort_index(ascending=false))
"""按序列的索引排序--降序排序
3 1.640271
2 -2.136196
1 -0.056267
0 -0.416758
dtype: float64
"""#按序列的值排序--公升序排序
print("按序列的值排序--公升序排序")
print(se_sort.sort_values())
"""按序列的值排序--公升序排序
2 -2.136196
0 -0.416758
1 -0.056267
3 1.640271
dtype: float64
""""""
抽樣是資料分析中常用的方法,通過從總體中抽取出一定量的樣本來推斷總體水平;
或者通過抽樣將資料拆分成兩部分,一部分建模,一部分測試。pandas模組中的sample函式
可以完成抽樣的任務
"""se_unique.sample(n=none,frac=none,replace=false,weights=none,random_state=none,axis=none)
"""n:指定抽樣的樣本量;
frac:指定抽取的樣本比例
replace:是否有放回抽樣,預設無放回
weights:指定樣本抽中的概率,預設等概論抽樣;
random_state=指定抽樣的隨機種子
"""#從1~100中無放回(即抽取過的元素不會再抽取到)隨機抽取4個數字
s_sample=pd.series(range(1,101))
print(s_sample.sample(n=4,random_state=3))
"""93 94
67 68
6 7
64 65
dtype: int64
"""#從1~6中有放回的抽取4個值
s_sample1=pd.series(range(1,7))
print(s_sample1.sample(n=4,replace=true,random_state=2))
"""0 1
5 6
0 1
3 4
dtype: int64
"""#從男女性別中不等概率抽中10個樣本
s_***=pd.series(['男','女'])
print(s_***.sample(n=10,replace=true,weights=[0.2,0.8],random_state=3))
"""1 女
1 女
1 女
1 女
1 女
1 女
0 男
1 女
0 男
1 女
dtype: object
"""#統計函式
np.random.seed(1234)
s_describe=pd.series(np.random.randint(size=100,low=1,high=30))
print(s_describe.describe())
"""count 100.000000--序列的元素個數
mean 15.730000--序列的平均值
std 7.844261--序列的標準差
min 1.000000--最小值
25% 10.000000
50% 16.000000
75% 22.000000
max 29.000000--最大值
dtype: float64
"""複製**
Pandas學習筆記(1)
1 pandas簡介 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。pandas 納入了大量庫和一些標準的資料模型,提供了高效地操作大型資料集所需的工具。pandas提供了大量能使我們快速便捷地處理資料的函式和方法。你很快就會發現,它是使python成為強大而高效...
python筆記(1)序列
最近各種東西實在太忙了,但是忙裡偷閒還是要開一本書,老外寫的,雖然囉嗦但是很有啟發性的。1.記錄函式 如果想要給函式寫文件,從而讓後來者使用能夠更加理解,可以加入注釋,以 開頭 另外一種方式就是直接寫上字串,它們會作為函式的一部分進行儲存,這成為 文件字串 例如 def square x calcu...
時間序列學習筆記1
時間序列 或稱動態數列 是指將同一統計指標的數值按其發生的時間先後順序排列而成的數列。時間序列分析的主要目的是根據已有的歷史資料對未來進行 經濟資料中大多數以時間序列的形式給出。根據觀察時間的不同,時間序列中的時間可以是年份 季度 月份或其他任何時間形式。例如 北京市月度cpi同比資料。具體的定義去...