pandas数据应用案例

用以下数据做一个简单的python数据分析案例

#导入excel数据
import pandas as pd
df= pd.read_excel(r'E:\ETL_soft\python\tt.xlsx')
df

#数据列的形式用中括号统一一下
#df['标准分']=(df.录取分数 - df.录取分数.min())/(df.录取分数.max()-df.录取分数.min())
#df
df['标准分']=(df['录取分数'] - df['录取分数'].min())/(df['录取分数'].max()-df['录取分数'].min())
df

#bins=[min(df.['录取分数'])-1,300,400,max(df.['录取分数'])+1]
#数据框里面的数据可以df.字段,如果是新增字段,可以用df['字段名']
bins=[min(df.录取分数)-1,300,400,max(df.录取分数)+1]
labels=['300分以下','300-400之间','400以上']
df['result']=pd.cut(df.录取分数,bins=bins,right=False,labels=labels)
df

#首先将日期用to_datetime改成标准格式,且format能加快速度,
#再应用apply更改时间为字符串,并命名周期
df['周期'] = to_datetime(df.注册日期,format="%Y/%m/%d").apply(lambda x: datetime.strftime(x,"%Y-%m-%d"))
df.head()

#进行分组
grouped = df['录取分数'].groupby(df['result'])
grouped.mean()


#统计各年份和月份出现的次数
#data.stop_datetime.dt.year.value_counts()
#data.stop_datetime.dt.month.value_counts()
#提取年
data['year'] = data.stop_datetime.dt.year
data['year'].head()
 
#提取月份
data['month'] = data.stop_datetime.dt.month
data['month'].head()
 
#提取日
data['day'] = data.stop_datetime.dt.day
data['day'].head()


# 默认axis=0,按行索引对行进行排序;ascending=True,升序排序
df.sort_index()
# 按列名对列进行排序,ascending=False 降序
df.sort_index(axis=1, ascending=False) 

# 按值对Series进行排序,使用order(),默认空值会置于尾部
#s = pd.Series([4, 6, np.nan, 2, np.nan])
#s.order()
#df.sort_values(by=['a','b'])#按列进行排序
df.sort_values(by=['录取分数'])#按列进行排序

#a=Series([7,-5,7,4,2,0,4])
#a.rank()#默认method='average',升序排名(ascending=True),按行(axis=0)
#average 值相等时,取排名的平均值
#min 值相等时,取排名最小值
#max 值相等时,取排名最大值
#first值相等时,按原始数据出现顺序排名
df.录取分数.rank()

#使用时间序列数据绘图

data['stop_time_datetime'] = pd.to_datetime(data.stop_time)
data.groupby(data.stop_time_datetime.dt.hour).drugs_related_stop.sum().plot()


#插入一列
#df = df.insert(12,'表准分',df['标准分'])
df
#删除列
#df=df.drop(['表准分'],axis = 1)
df.head()

#移动列'表准分',移动列也很简单,假如我们想要将c列移动到第一列,
#我们可以使用pop来输出并删除b列,然后再将b列插入到第一列,这样就完成了移动
#df.pop()
#df = df.insert(12,'表准分',df['标准分'])
df.head()

#时间函数
df_dt=to_datetime(df.周期,format="%Y/%m/%d")
 
s_y=df_dt.dt.year
s_s=df_dt.dt.second
s_m=df_dt.dt.minute
s_h=df_dt.dt.hour
s_d=df_dt.dt.day
s_M=df_dt.dt.month
s_w=df_dt.dt.weekday
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
参数	说明
by	       指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis	   若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中
           数据大小排序,默认axis=0
ascending  是否按指定列的数组升序排列,默认为True,即升序排列
inplace	   是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position	{‘first’,‘last’},设定缺失值的显示位置
#依据第一列排序,并将该列空值放在首位
df.sort_values(by=['col1'],na_position='first')
#依据第二、三列,数值降序排序
df.sort_values(by=['col2','col3'],ascending=False)
#根据第一列中数值排序,按降序排列,并替换原数据
df.sort_values(by=['col1'],ascending=False,inplace=True,
                     na_position='first')
print(df)
x = pd.DataFrame({'x1':[1,2,2,3],'x2':[4,3,2,1],'x3':[3,2,4,1]}) 
print(x)
#按照索引值为0的行,即第一行的值来降序排序
print(x.sort_values(by =0,ascending=False,axis=1))

更为详细的函数参见:

https://blog.csdn.net/zhili8866/article/details/68134481(基本的数据函数都有)

https://blog.csdn.net/MsSpark/article/details/83154128  (排序sort_value函数)

http://www.cnblogs.com/We612/p/10168531.html

http://www.cnblogs.com/zhoug2020/p/7762633.html

猜你喜欢

转载自blog.csdn.net/OYY_90/article/details/89359031