pandas的基础应用

Pandas提供了一套名为DataFrame的数据结构,比较契合统计分析中的表结构,并且提供了计算接口,可用Numpy或其它方式进行计算。

1 文件读取

import pandas as pd
dataframe=pd.read_csv(r'C:\Users\Administrator\Desktop\mealcsv',encoding='gbk')

'''
读取  
read_csv
read_excel
read_hdf
read_sql
read_json
read_msgpack(experimental)
ead_html
read_gbq(experimental)
read_stata
read_sas
read_clipboard
read_pickle
写入
dataframe.to_excel()
'''

2 dataframe属性

Dataframe是pandas常用对象,利用pandas读取数据后,数据以dataframe类型存储在内存中;

print('所有元素:\n',dataframe.values)
print('行索引:\n',dataframe.index)
print('列索引:\n',dataframe.columns)
print('元素类型:\n', dataframe.dtypes)
print('元素个数:\n', dataframe.size)
print('维度:\n', dataframe.ndim)
print('结构:\n', dataframe.shape)
print('转置:\n', dataframe.T)

3 dataframe增删改查

#1.dataframe查找
print('获取某一列:\n', dataframe['ACCOUNT'])
print('获取多列前5行:\n', dataframe[:][:5])
#tail()/head(),()中可以传数字,传入的数字表示获取对应的前几行,后几行;
print('获取后5行:\n', dataframe.tail())


#loc/iloc函数,建议使用lic/ilic切片,函数传入的值顺序与numpy相同【行,列】
#loc:针对索引名称的切片;loc[行索引名称或条件, 列索引名称]
# iloc:针对索引的切片(传入的必须是行索引和列索引所在的位置);iloc[行索引位置, 列索引位置]

print('使用loc切片,取ACCOUNT列:\n',dataframe.loc[:, 'ACCOUNT'])
print('使用iloc切片,取ACCOUNT列:\n',dataframe.iloc[:, 2])
#条件切片:
print(dataframe.loc[dataframe['order_id']==458, ['order_id','dishes_name']]) #查找订单号为458的订单所订的菜品名称


#2,更改数据:(直接对原表进行修改的)
dataframe.loc[dataframe['id]==400],'name']=='blac'

#3.添加数据:只需要新建一个列索引,并对该索引下的数据进行赋值:
dataframe['types']='int'

#4.删除某行某列:
#inplace:默认为False,表示是否对原表进行修改;axis=1,列操作 。 axis=0,行操作
dataframe.drop(labels=['types'],axis=1,inplace=True)

#how='all' 整列全是空值,删除整列。how='any',整列有任意一个空值,删除整列
dataframe.dropna(axis=1,how='all') 

4 描述分析DataFrame数据

pandas中统计分析数值方法: describe方法求解:
# print(dataframe[['amounts']].describe())
#count:表示非空数目/mean:/std:标准差/四分位数(min,25%,50%,75%,max)

将数据数据类型转换后求统计描述:astype方法转化类型——-category;
dataframe['name'] = dataframe['name'].astype('category')

#describe:当其运用于类别型数据时,返回4个统计变量:分别为:
# 列非空元素的数目、类别的数目(去重后的值个数)、数目最多的类别、数目最多的类别出现的次数
print(dataframe['name'].describe())


转换与处理时间序列数据

#先转换为标准时间类型
dataframe['order_time'] = pd.to_datetime(dataframe['order_time'])
#或者:print(dataframe['order_time'].dt.date)
#提取时间序列信——需要利用列表推导式进行提取:
date = [i.date() for i in dataframe['order_time']]
print(date)
'''
year
month
day
hour
minute
second
'''

#时间运算:(加法运算)
#天数加1,Timedelta()内参数必须是复数
time1 = dataframe['order_time']+pd.Timedelta(days=1)

#时间运算:(减法运算)
timedelta = pd.to_datetime(dataframe['order_time'])- pd.to_datetime('2017-1-1')
print(timedelta)

聚合数据agg

detail=pd.read_excel(r'detail.xlsx')
#agg,求相同字段
print(detail[['counts','amounts']].agg([np.sum,np.mean]))

#求不同字段
print(detail.agg({'counts':np.sum,'amounts':np.mean}))
#不同字段,不同数目计算
print(detail.agg({'counts':np.sum,'amounts':[np.sum,np.mean]}))

#agg  自定义函数
# def doubles(data):
#     return data.sum()*2
# print(detail.agg({'counts':doubles},axis=0))

聚合数据apply

#apply与agg差别在于apply不可以对不同字段使用不同函数

print(detail[['counts','amounts']].apply(np.mean))

聚合数据transform

print(detail[['counts','amounts']].transform(lambda x:x*2))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值