dateframe

import pandas as pd
import numpy as np
from pandas import DataFrame
import datetime
# 定义dataframe
x1=[10,20,30,40,50,60]
x2=['male','male','male','female','male','female']
x3=['a','b','c','a','c','a']
x4=['2018-01-01','2018-01-02','2018-01-03','2018-01-04','2018-01-05','2018-01-06']
x5=[200,300,400,500,600,700]
#定义空dateframe:
df=Dataframe(columns=['x1','x2','x3'])

#判断dateframe是否为空
df.empty


#不设定index:取某一行数据
df=DataFrame({ 'score':x1, 'sex':x2,'class':x3})
df.iloc[2]



#方式1:设置index,不常用
df=DataFrame({ 'score':x1, 'sex':x2,'class':x3})
df.index=x4
print(df)


#方式2:指定列为索引:set_index
# df=DataFrame({ 'score':x1, 'sex':x2, 'class':x3,'data_time':x4,'salary':x5})
# df_col_index=df.set_index('data_time')  #默认inplace=False,不改变原数据
# print(df_col_index)

#指定索引为列名:reset_index
# df_index_col=df_col_index.reset_index()
# print(df_index_col)

#删除索引:reset_index()
df_del=df.reset_index(drop=True)

#修改dateframe的小数位
df_round=df.round(2)



#改变某一列的数据类型:

df['score'].apply(pd.to_muneric)
 
 


#判断某一列的类型
from pandas.api.types import is_string_dtype,is_datetime64_dtype
is_datetime64_dtype(df['date_time'])



#根据索引取值:dateframe:loc,series:字典
# res=df['class'].loc['2018-01-02']
# print(res)
# print(df['2018-01-01'

#最大值对应的索引:idxmax
# max_index=df['score'].idxmax()
# print(max_index)

#重新命名列名>rename
# res=df.rename(columns={'data_time':'mytime'},inplace=False)
# print(res)





#取索引值:df.index.tolist
# print(df.index)#<class 'pandas.core.indexes.base.Index'>
# print(df.index.tolist())#list
#取列名:de.columns.tolist
# print(df.columns)#<class 'pandas.core.indexes.base.Index'>
# print(df.columns.tolist())


#将字符串转化为时间格式
df['data_time'] = pd.to_datetime(df['data_time'])#取年月日时分秒
df['date_time']=pd.to_datetome(df['date_time']).dt.date#只取年月日




#根据时间取数据
# df['data_time'] = pd.to_datetime(df['data_time'])
# data = df.set_index('data_time')
# start='2018-01-02'
# end='2018-01-05'
#特定日期段的数据
# mydata = data[start:end]
# print(mydata)

#过去5天的数据
# end_time = datetime.datetime.strptime(end, '%Y-%m-%d')
# past_5_Time = (end_time - datetime.timedelta(days=4)).strftime('%Y-%m-%d')
# data_time = data[past_5_Time:end_time]
# print(data_time)
#两日期相差的天数
# date1 = datetime.datetime.strptime(start[0:10], "%Y-%m-%d")
# date2 = datetime.datetime.strptime(end[0:10], "%Y-%m-%d")
# day = (date2-date1).days+1
# print(day)



#将0和空值删除
df_copy=df.copy()
df_copy.replace(0,np.nan)
df=df_copy

# data_col=data_0.dropna(axis=0,how='any')
# print(data_col)


#连接1:横连接,没有索引,只有列名


# df1_time=DataFrame({ 'score':x1, 'sex':x2, 'class':x3,'time1':x4})
# df2_time=DataFrame({'income':x5,'time2':x4})
## mydata=pd.merge(df1_time,df2_time,on='time')#列名相同
# mydata=pd.merge(df1_time,df2_time,left_on='time1',right_on='time2')#列名不同
# print(mydata)


#连接2:横连接,有索引:右表的索引值是左表某一列或索引值
# df1=DataFrame({ 'score':x1, 'sex':x2, 'class':x3,'time1':x4})
# df1_time=df1.set_index('time1')
# df2=DataFrame({'income':x5,'time2':x4})
# df2_time=df2.set_index('time2')
# mydata=df1.join(df2_time)##索引相同
# mydata=df1_time.join(df2_time,on='time1')##索引不同
# print(mydata)
#连接3 竖连接
df_concat=pd.concat([left_df,right_df],axis=0)



#
#分组:Series,按性别计算均值:空值不考虑在内
# score_mean=df['score'].groupby(df['sex']).mean()
# print(score_mean)
# # print(score_sum['female'])#<class 'pandas.core.series.Series'>
# #透视表:DataFrame
# df_pivot=df.pivot_table(index='sex',values='score',aggfunc='mean')
# print(df_pivot)
# print(type(df_pivot))#<class 'pandas.core.frame.DataFrame'>

# 每列的数据统计:Series',缺失比例
# df_count=df.count()/df.shape[0]
# print(df_count)

#两列相除:除数可以是空值,但不能为0
# df['avg']= df.apply(lambda x: x['salary']/x['score'], axis=1)
# print(df)
#某列含有字符串
df= df[data_col['class'].str.contains('a')]








转载于:https://www.cnblogs.com/hapyygril/p/9619804.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值