pandas基操

一、文件读取

倒入库:

import pandas as pd

1.文本文件

csv:文本文件分割符,默认分割符为‘,’;sep是改变文本分割符的;如果赋值错误,则会连在一片

order = pd.read_table(r'文件名.csv',encoding='gbk',sep=',')

read_table:可以读任何文本文件;;encoding:编码格式

order1 = pd.read_csv(r'文件名.csv',encoding='gbk',sep=',')

read_csv:专门读csv文件

2.excel文件(.xls(2007年); .xlsx(2007年后))

打开excel文件:

detai = pd.read_excel(r'文件名.xlsx') 

保存excel文件:

detai = pd.to_excel(r'文件名.xlsx')

二、dataframe的常规属性操作

1,表头,列索引

print(order.columns)

2,数据

print(order.values)

3,行索引方式

print(order.index)

4,元素类型

print(order.dtypes)

5,元素个数

print(order.size)

6,dataframe维度

print(order.ndim)

7,dataframe结构

print(order.shape)

8,转置

print(order.T)

三、增删查改dataframe的数据

1.查

print(order['列索引名']['行索引名'])
print(order[['多个列索引名']][['多个行索引名']])

(1)多行数据

print(order[:][:5])
print(order.head())  # 从头开始,默认为前五个值
print(order.tail(10))  # 从后面开始,后十个

(2)切片方法loc,iloc

loc[是前闭后闭],,iloc[是前闭后开]

order.loc[行索引名称,列索引名称]
order.loc[行索引位置,列索引位置]

(3)高级用法

mask1 =文件名['列索引']==条件
mask2 =文件名['列索引']==条件
mask =np.any((mask1,mask2),axis=0)  # 跟 mask=mask1|mask2 一样
print(detai.loc[mask,['列索引名','列索引名']])

2.改

detai.loc[detai['用于判断的列索引']==条件,'要改变的列索引']=改变后的数据 

更改是对读取的原始表进行修改,操作无法撤销;

3.增

detai['要添加的新的列的索引名'] =数据(数组或列表)

4.删

detai.drop(labels=range(10),axis=0,inplace=True)  # 删除前十列,axis只能等于0, inplace是是否保存
detai.drop(labels=['要删除的列索引'],axis=1,inplace=True)  # 删除要删除的列,axis只能等于1

三、dataframe统计描述

1.数值型数据:

'''
np.min  np.mean   np.var   np.argmin
np.max  np.cumsum  np.std  np.argmax
np.sum  np.cumprod  np.argsort
np.ptp # 极差(max-min)  np.cov  # 协方差
np.median  # 中位数
'''
print(np.mean(detai['列索引']))
print(detai['列索引'].mean())

2.describe 函数

(1)针对数值型数据

print(detai[['列索引']].describe())  # 列索引下必须是数值型
# 返回的是:count:非空数目:mean;std;min;25%;50%;75%;max

(2)类别型数据用法

print(detai['列索引'].describe())  # 列索引下必须是类别型
# 返回:count,unique(类别数目),top:众数;freq:众数出现的频率
print(detai['dishes_name'].count())  # 非空数目
print('频数统计结果:',detai['dishes_name'].value_counts())
print('众数:',detai['dishes_name'].mode())

(3)数据类型转换 category(类别型)

detai['要转变的列索引'].astype('category')

四、对时间的操作

1.转换时间格式,(把/转换为-)

order['时间的那一列的列索引'] = pd.to_datetime(order['时间的那一列的列索引'])

2.通过推导式提取时间

yesr =[i.year for i in order['格式为-的那一列是时间的索引']]  # yesr:年
month =[i.month for i in order['格式为-的那一列是时间的索引']]  # month:月
day =[i.day for i in order['格式为-的那一列是时间的索引']]  # day:日
## 小时:hour  分钟:minute  秒:second  日期(有大小):date 一年中的第几周:week

3.时间的运算:hours 加小时

time1 = order['lock_time']+pd.Timedelta(days=1)
# print(order['lock_time']-pd.to_datetime('2016-1-1'))  # 日期

五、分组聚合内计算

import pandas as pd
import numpy as np
detail =pd.read_excel(r’文件名.xlsx’)

1.通过简单的统计函数

detaigeoup =detail[['列索引1','列索引2','列索引3']].groupby(by='索引1')  # by:以谁为聚合

2.第二种聚合:

agg:不同字段要求相同的统计函数

print(detail[['列索引1','列索引2']].agg([np.mean,np,sum]))

agg:对不同字段要求不同的统计函数

print(detail.agg({'列索引1':np.sum,'列索引2':np.mean}))
print(detai.agg({'counts':np.sum,'amounts':[np.mean,np.sum,np.median]}))

transform 方法聚合:func

print(detai[['列索引1','列索引2']].transform(lambda x:x*2).head())

六、透视表与交叉表

1.透视表

index:行分组键

detailpivot =pd.pivot_table(detai[['counts','order_id','amounts','dishes_name']],index=['order_id','dishes_name'],aggfunc=np.sum)

columns: 列分组键

detailpivot = pd.pivot_table(detai[['counts', 'order_id', 'amounts', 'dishes_name']], values='counts',  columns='dishes_name',aggfunc=np.sum)

行列都用

detailpivot = pd.pivot_table(detai[['counts', 'order_id', 'amounts', 'dishes_name']],values='counts', index='order_id', columns='dishes_name',aggfunc=np.sum, fill_value=0, margins=True)  # margins :是否求和

2.交叉表

print(pd.crosstab(index=detai['列索引1'],columns =detai[列索引2],values=detai['列索引3],aggfunc=np.sum))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值