python数据分析中的数据筛选

注:下面的几个例子修改自蔡驰聪《python数据分析从入门到精通》,因为自己最近在跟着这本书学习,所以一边看一边根据自己的理解修改案例

import pandas as pd
import numpy数组案例 as np
#from IPython.display import display

#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)


students=pd.DataFrame(
    {"name":["lucy","rick","mary","john"],
     "age":[12,14,19,20],
     "score":[72,65,76,99]},
    index=[1,2,3,4])
    #columns=["name","school","age","score","goal"]
                      #)
print(students)
def ddd(x):
    return x['score']*2
students['goal']=students.apply(ddd,axis=1)
print(students)


"""
索引处理

"""

#下面的[('weight1','kg'),('weight','pounds')]里面的元组元素个数必须相同,不然报错
#这个代码表示的是列的多层索引,按照从左到右的顺序把索引weight1,kg从上到下一次排下来,weight1是第一层索引,kg是第二层
#如果括号里有三个参数,则有三层索引。
multicol=pd.MultiIndex.from_tuples([('weight1','kg'),('weight','pounds')])
#print(multicol)
#index=[['cat','dog'],['cat2','dog2']]里面的两个列表的元素个数必须相同,不然报错
#这个代码表示的是行的多层索引,按照从左到右的参数顺序把索引第一个中括号的参数1:cat,第二个中括号的参数1:cat2
# 从上到下依次排下来,cat是第一层索引,cat2是第二层,这个行输出结果看着就是竖着的索引。
#如果括号里有三个参数,则有三层索引。
df=pd.DataFrame([[1,2],[2,4]],index=[['cat','dog'],['cat2','dog2']],columns=multicol)
print(df)



"""
上面是我自己改的代码,为了加深理解
"""


"""
下面是案例代码
"""
multicol2=pd.MultiIndex.from_tuples([('weight','kg'),('weight','pounds')])

df2=pd.DataFrame([[1,2],[2,4]],index=['cat','dog'],columns=multicol2)
print(df2)
df3=df2.stack()
print('列和行索引转置后','\n',df3)



"""
时间序列
"""

from datetime import datetime
import pytz
import numpy as np


#在start, end, periods 和 freq 四个参数中,只能指定3个参数,不然报错。
#如:ts=pd.date_range(start='2022-01-01',end='2022-02-01',periods=100,freq='h',tz='Asia/Hong_Kong')
#就会报错ValueError: Of the four parameters: start, end, periods, and freq, exactly three must be specified

ts=pd.date_range(start='2022-01-01',end='2022-02-01',freq='h',tz='Asia/Hong_Kong')
print(ts)

time_shulie=[datetime(2022,1,1),datetime(2022,1,1)]
tq=pd.Series(np.random.randn(2),index=time_shulie)
print(time_shulie)
print(tq)
print(tq.index)

"""
date_range方法生成时间序列
"""

生成的时间=pd.date_range('2022-01-01','2022-02-01',freq='w-mon',name="生成的时间")
print('每个星期三的日期:','\n',生成的时间)
print("变量生成的时间的数据类型是:",type(生成的时间))
#生成的时间是一个datetimeindex对象,有时间组成元素的全部属性,时分秒天等。
#下面就是获取生成的时间这个变量里面的年的信息
print("获取到的时间的年份是:",pd.DatetimeIndex(生成的时间).year)

"""
时间序列升降采样案例
"""


rng=pd.date_range('2019-01-01','2019-10-01',freq='W')
tp=pd.Series(np.random.randint(0,500,len(rng)),index=rng)
print(tp)
#tp2=tp.resample("12h")

#tp2=tp.resample("12h").asfreq()可以改成tp2=tp.resample(),tp3=tp2.asfreq("12"),改一下新产生的变量的值
tp2=tp.resample("12h").asfreq()
print("\n""tp2为:""\n",tp2,"\n""tp2长度为:",len(tp))
#向前填充所有因为升采样产生的缺失值,limit=100限制填充的个数为100个
tp3=tp.resample("12h").ffill(limit=10)
print(tp3)

#向后填充所有因为升采样产生的缺失值,limit=100限制填充的个数为100个
tp3=tp.resample("12h").bfill(limit=10)
print(tp3)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值