Python————Pandas统计分析基础

Pandas简介

pandas:强大的数据分析和处理工具
快速、灵活、富有表现力的数据结构:DataFrame数据框和Series系列

Pandas读取文本数据

Python————Pandas统计分析基础_第1张图片

#读写不同数据源的数据
import pandas as pd
data_txt = pd.read_csv('meal_order_info.txt',sep=' ')    #指定一行中数据间的分隔符为空格
data_csv = pd.read_csv('meal_order_info.csv',encoding='GBK')    #设置解码方式为GBK


data_txt

Python————Pandas统计分析基础_第2张图片

data_csv

Python————Pandas统计分析基础_第3张图片

储存数据框

Python————Pandas统计分析基础_第4张图片

#将数据框储存为文本文件数据
data_csv.to_csv('tmp/data_csv.csv',index=None,encoding ='gbk')  #index为行索引 ,header为列索引  None为取消

Pandas读取excel文件

Python————Pandas统计分析基础_第5张图片

#Pandas读取excel文件
data_excel =pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail2')
data_excel

Python————Pandas统计分析基础_第6张图片

将数据框储存为excel文件

#将数据框储存为excel文件
data_excel.to_excel('tmp/data_excel.xlsx',index=None,sheet_name='test1')

构建数据框

Python————Pandas统计分析基础_第7张图片

#series 系列
import pandas as pd
ser1 = pd.Series([1,2,'a'],index=['a','b','c'])
print(ser1)
ser2  = pd.Series({'a':[1,2,3],'b':['1','2','3']})
print(ser2)

Python————Pandas统计分析基础_第8张图片

d=[[1.3,2.0,3,4],[2,4,1,4],[2,5,1.9,7],[3,1,0,11]]
print(d)
df = pd.DataFrame(d,index=['a','b','c','d'],columns=['A','B','C','D'])  #index 设置行名称 columns 设置列名称
print(df)

Python————Pandas统计分析基础_第9张图片

Python————Pandas统计分析基础_第10张图片

d={'color':['blue','green','yellow','red','white'],
   'object':['ball','pen','pencil','paper','mug'],
  'price':[1.2,1.0,0.6,0.9,1.7]}
frame = pd.DataFrame(d,index=['a','b','c','d','e'])
print(frame)


pd.DataFrame(index=[1,2],columns=[1,2])                       #生成全部都是缺失值的数据框    
 

Python————Pandas统计分析基础_第11张图片

pd.DataFrame(1,index=[1,2],columns=[1,2])                       #生成全部都是1的数据框 

Python————Pandas统计分析基础_第12张图片

查看数据框的常用属性

Python————Pandas统计分析基础_第13张图片

#数据框的常用属性
d=[[1.3,2.0,3,4],[2,4,1,4],[2,5,1.9,7],[3,1,0,11]]
df = pd.DataFrame(d,index=['a','b','c','d'],columns=['A','B','C','D'])
print(df)
print(df.values)
print(df.index)
print(df.shape)
print(df.dtypes)                          #查看数据框内每一列数据的类型

Python————Pandas统计分析基础_第14张图片

按行列顺序访问数据框中的元素

d=[[1.3,2.0,3,4],[2,4,1,4],[2,5,1.9,7],[3,1,0,11]]
df = pd.DataFrame(d,index=['a','b','c','d'],columns=['A','B','C','D'])
print(df)

print(df['A'])                 #单列数据访问
print(df[['A','C']])                #多列数据的访问


print(df.head(3))                 #查看数据的前3行
print(df.tail(3))                  #查看数据的后3行


print(df.iloc[0,0])                  #查看数据的第0行,第0列
print(df.iloc[0:3,0])
print(df.iloc[:,0])
print(df.iloc[0,:])

Python————Pandas统计分析基础_第15张图片

按行列名称访问数据框中的元素

print(df.loc['a','A'])
print(df.loc['a':'c','A'])                  #按名称访问 'a':'c'   是闭区间
print(df.loc[:,'A'])  
print(df.loc['a':'c',:]) 
print(df.loc[['a','c'],['A','C']])

Python————Pandas统计分析基础_第16张图片

修改数据框中的数据

Python————Pandas统计分析基础_第17张图片

d=[[1.3,2.0,3,4],[2,4,1,4],[2,5,1.9,7],[3,1,0,11]]
df = pd.DataFrame(d,index=['a','b','c','d'],columns=['A','B','C','D'])
print(df)
df.loc['a','A'] = 101       #修改数据框中的数据
df.loc[:,'B']  = 0.25
df.loc[:,'C']=[1,2,3,4]
print(df)

Python————Pandas统计分析基础_第18张图片

Python————Pandas统计分析基础_第19张图片

d=[[1.3,2.0,3,4],[2,4,1,4],[2,5,1.9,7],[3,1,0,11]]
df = pd.DataFrame(d,index=['a','b','c','d'],columns=['A','B','C','D'])
print(df)
df['E']=5                  #添加额外的列
df['F']=[1,2,3,4]    
print(df)

Python————Pandas统计分析基础_第20张图片

删除数据框中的元素

Python————Pandas统计分析基础_第21张图片

d=[[1.3,2.0,3,4],[2,4,1,4],[2,5,1.9,7],[3,1,0,11]]
df = pd.DataFrame(d,index=['a','b','c','d'],columns=['A','B','C','D'])
print(df)
print(df.drop('D',axis=1,inplace=False))       #删除单列数据     inplace不添加时默认为False
                            #当inplace=False时,不对源数据进行修改,而是返回一个副本文件 
                            #当inplace=True时,直接对源数据进行修改
print(df.drop(['a','c'],axis=0))           

Python————Pandas统计分析基础_第22张图片

描述分析数据框中的元素

Python————Pandas统计分析基础_第23张图片Python————Pandas统计分析基础_第24张图片Python————Pandas统计分析基础_第25张图片

import numpy as np
d=[[1.3,2.0,3,4],[2,4,1,4],[2,5,1.9,7],[3,1,0,11]]
df = pd.DataFrame(d,index=['a','b','c','d'],columns=['A','B','C','D'])
print(df)
print(np.mean(df,axis=1)   )    #求均值  axis=1 按行   axis=0 按列   默认按列
df.std()
df.describe() 

df['A'].value_counts()  统计出A列元素的出现次数

Python————Pandas统计分析基础_第26张图片

转换成时间类型数据

Python————Pandas统计分析基础_第27张图片

import pandas as pd
order = pd.read_csv('tmp/meal_order_info.csv',encoding='gbk')
#print(order)
print(order['lock_time'].dtype)
order['lock_time'] = pd.to_datetime(order['lock_time'])   #将lock_time这一列的数据类型转为时间类型
print(order['lock_time'].dtype)

在这里插入图片描述

order['lock_time']

Python————Pandas统计分析基础_第28张图片
Python————Pandas统计分析基础_第29张图片Python————Pandas统计分析基础_第30张图片

print(pd.DatetimeIndex(order['lock_time']))
print(pd.PeriodIndex(order['lock_time'],freq='H'))

Python————Pandas统计分析基础_第31张图片

时间类型数据的常用操作

Python————Pandas统计分析基础_第32张图片
Python————Pandas统计分析基础_第33张图片
Python————Pandas统计分析基础_第34张图片

print(order['lock_time'])
print(order['lock_time'][0].year)       #查看第0个元素的年份
print(order['lock_time'].dt.year)        #查看所有元素的年份
print(order['lock_time'].dt.month)       #查看所有元素的月份
print(order['lock_time'].dt.week)        #查看所有元素是每年第几个星期

Python————Pandas统计分析基础_第35张图片

print(order['lock_time']+pd.Timedelta(days=1)  )       #将日期全部增加一天
print(order['lock_time'][1]-order['lock_time'][0]   )        #将第1个元素和第0个元素相减 求时间差

Python————Pandas统计分析基础_第36张图片

分组聚合操作

Python————Pandas统计分析基础_第37张图片Python————Pandas统计分析基础_第38张图片

import pandas as pd
detail = pd.read_excel('tmp/meal_order_detail.xlsx')
detail.head()

Python————Pandas统计分析基础_第39张图片

detail_group = detail[['order_id','counts','amounts']].groupby(by='order_id')  #以order_id为分组依据
detail_group.agg('mean').head(3)

Python————Pandas统计分析基础_第40张图片

detail_group.agg(['mean','sum']).head(3)

Python————Pandas统计分析基础_第41张图片

import numpy as np
detail_group.agg({'counts':['mean',np.max],'amounts':'std'}).head(3)

Python————Pandas统计分析基础_第42张图片

创建透视表与交叉表

Python————Pandas统计分析基础_第43张图片

import pandas as pd
detail = pd.read_excel('tmp/meal_order_detail.xlsx')
detail.head()

Python————Pandas统计分析基础_第44张图片

pd.pivot_table(detail[['order_id','counts','amounts']],index='order_id',aggfunc='sum').head(3)

Python————Pandas统计分析基础_第45张图片

pd.pivot_table(detail[['order_id','dishes_name','counts']],index='order_id',columns='dishes_name',aggfunc='sum')

Python————Pandas统计分析基础_第46张图片

pd.pivot_table(detail[['order_id','dishes_name','counts']],index='order_id',columns='dishes_name',values='counts',fill_value=0).head()

Python————Pandas统计分析基础_第47张图片

pd.crosstab(index=detail['order_id'],columns=detail['dishes_name']).head()

Python————Pandas统计分析基础_第48张图片

pd.crosstab(index=detail['order_id'],columns=detail['dishes_name'],values=detail['counts'],aggfunc='sum').fillna(0).head()

Python————Pandas统计分析基础_第49张图片

你可能感兴趣的:(python,python,excel,数据分析,大数据)