处理数据部分必备代码

本文详细阐述了Python中处理数据时遇到的UTF-8编码问题,以及一系列数据操作技巧,如时间序列处理、DataFrame合并、缺失值处理、奇偶行筛选、Groupby应用和去除重复索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、读取数据出现UTF-8错误

encoding="gbk"

2、进行时间系列的平均,并将平均后的数据转化为时间格式

data.index = pd.to_datetime(data.index)
data = data.groupby(data.index.to_period('H')).mean()
data.index = data.index.to_timestamp()
df['hour'] = df.index.hour #提取时间中的小时
df.query('hour >= 9 and hour <= 12') # 选择小时范围在9到12小时内的数据

3、将不同的datafram合并

pd.concat([df1,df2,df3],axis = 1)
#axis=1按列,axis=0按行

4、补全时间

t_index = pd.date_range('2022-02-01 00:00:00', '2022-02-28 23:55:00', freq='5T')
df.index = pd.to_datetime(df.index, format='%Y-%m-%d %H:%M:%S')
df = df.reindex(t_index)

5、删除缺失值

data.dropna(axis=0,how='all') #只删除行中所有为Nan值的行
data.dropna(axis=0,how='any')  # 删除行中有含有任何NaN的行
# axis控制行(0)和列(1)

6、挑选奇数列或者偶数列

#保留奇数行,删除偶数行
df=df.iloc[:,[i%2==0 for i in range(len(df.columns))]]
#保留偶数行,删除奇数行
df=df.iloc[:,[i%2==1 for i in range(len(df.columns))]]

7、挑选奇数行或者偶数行

#生成列表实现筛选,保留奇数行,删除偶数行
df=df[[i%2==0 for i in range(len(df.index))]]
#保留偶数行,删除奇数行
df=df[[i%2==1 for i in range(len(df.index))]]
#index是数字时
#保留奇数行,删除偶数行
df=df[df.index%2==0]
# 保留偶数行,删除奇数行
df=df[df.index%2==1]

8、Groupby

df = pd.read_csv('../data.csv',index_col=0)
df.index = pd.to_datetime(df.index)
df['hour'] = df.index.hour
df['miu'] = df.index.minute
data1 = df.groupby(['hour','miu']).agg('mean').reset_index()
# reset_index() 重置index好进行挑选
mius = [0,10,20,30,40,50]
data1 = data1[data1['miu'].isin(mius)]
data1['time'] = pd.to_datetime(data1['hour'].astype(str) + ':' + data1['miu'].astype(str), format='%H:%M').dt.strftime('%H:%M')
# data1['time'] = data1['time'].dt.strftime('%H:%M') # 只保留小时和分钟
data1 = data1.drop(['hour', 'miu'], axis=1)
data1.set_index('time', inplace=True)

9、去除重复的index

df_gk = df_gk[~df_gk.index.duplicated()] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值