Pandas学习笔记1(序列部分)

人生苦短,我用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_sex=pd.Series(['男','女'])
print(s_sex.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
"""复制代码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值