导入库

# coding: utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
import time
import os
import datetime# 显示所有行列
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

Pandas 数据导入导出

# 数据导入导出
pwd = os.getcwd() #获取当前路径
os.chdir(r"文件路径")
df = pd.read_csv('file_name.csv')
df = pd.read_csv('file_name.csv',encoding='gbk',index_col=None,sep=',') #文档中有中文df.to_csv('name_of_df.csv')# 创建一个新的data frame的方法
dict_1 = {"a":[1,2,3];b":[5,6,7]}
df1 = pd.DataFrame(dict_1,index = [1,3,2])npdata = np.random.randn(4, 5)
df2 = pd.DataFrame(npdata,columns=['a','b','c','d','e'])

数据预览

df
df.shape()
df.info()
df.ndim()
df.head()
df.tail()
df.columns()
df.rows()
df.describe() #统计数据查看df['col_name'].quantile(0.01) # 查看下0.01分位点# 显示所有行列
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

Dataframe 基础操作

# 重命名列
df = df.rename(columns = {'col':'new_col'})# 删除列
df.drop('a',axis=1)#重置index
df.reset_index()

数据清理——替换,去重,哑变量

data["col_name"]=data["col_name"].fillna(5) # 用5填充为nan的值camp['dup'] = camp.duplicated() # 生成重复标识变量
camp_dup = camp[camp['dup'] == True] # 把有重复的数据保存出来,以备核查
camp_nodup = camp[camp['dup'] == False] # 注意与camp.drop_duplicates()的区别
df.drop_duplicates()df.score.replace(999,np.nan)
df.replace({'score':{999:np.nan},'name':{'Bob':np.nan}})# 均值填补空缺值
vmean = df['Age'].mean(axis=0, skipna=True)
df['Age_empflag'] = df['Age'].isnull()
df['Age']= df['Age'].fillna(vmean) # 创新新的计算列
df['col1'] =df['a'] - df['b']
ndf=df.assign(col2 =  df['a'] - df['b'],col3 = df['a'] + df['b'])#自定义函数创建新的列
def transform(row):if row['column_name'] == 1:return ('class1')elif row['column_name'] == 2:return ('class2')
sample.apply(transform,axis=1)
sample.assign(new_column_name = sample.apply(transform,axis=1))
sample.loc[sample.column_name==1,'new_column_name']='class1'
sample.loc[sample.column_name==2,'new_column_name']='class2'#盖帽法处理数据
def blk(floor, root): def f(x):       if x < floor:x = floorelif x > root:x = rootreturn xreturn f
q1 = camp['Age'].quantile(0.01)
q99 = camp['Age'].quantile(0.99)
blk_tot = blk(floor=q1, root=q99) # 'blk_tot' is a function
camp['Age']= camp['Age'].map(blk_tot) # 数据值的变量替换处理,新标签创建
district_dict = {'fengtai':'丰台区','haidian':'海淀区','chaoyang':'朝阳区','dongcheng':'东城区','xicheng':'西城区','shijingshan':'石景山区'}
df['district'] = df.dist.map(district_dict)# - 分箱法——等宽分箱
camp['Age_group1'] = pd.qcut( camp['Age'], 4) # 这里以age_oldest_tr字段等宽分为4段
# - 分箱法——等深分箱
camp['Age_group2'] = pd.cut( camp['Age'], 4) # 这里以age_oldest_tr字段等宽分为4段

数据汇总

# 单维度变量
snd['district'].value_counts()
snd['dist'].value_counts().plot(kind = 'bar')
snd['dist'].value_counts().plot(kind = 'pie')
sample.sort_values('score',ascending=False,na_position='last')
sample.sort_values(['group','score'])# 单数值变量
snd.price.hist(bins=40)
plt.hist(snd['price'], bins=20, normed=True,range=(df.price.min(),df.price.max()))#指定绘图的值域
snd.price.quantile([0.01,0.5,0.99])
snd.price.mean()
snd.price.agg(['mean','median','sum','std','skew'])# 双维度变量
df = pd.crosstab(snd.dist,snd.school)
pd.crosstab(snd.dist,snd.school).plot(kind='bar')
pd.crosstab(snd.dist,snd.school).plot(kind='bar',stacked=True)
pd.melt(table1,id_vars='cust_id',value_vars=['Normal','Special_offer'],value_name='Monetary',var_name='TYPE')# 将交叉表变为分组汇总表 id_vars 为主变量,value_vars为要变为分组的汇总列,value_name 变为汇总值的列名,var_name为分组变量名的列名   sub_df=pd.crosstab(snd.dist,snd.school)
sub_df['sum1']=sub_df.sum(1)
sub_df = sub_df.div(sub_df.sum1,axis=0)
sub_df.drop('sum1',axis=1)
sub_df[[0,1]].plot(kind='bar',stacked=True) # 标准化堆叠图from stack2dim import *
stack2dim(snd,i='dist',j='school') #粗细会变的堆叠图# 维度变量+数值变量
snd.price.groupby(snd.dist).mean()
snd.price.groupby(snd.dist).mean().sort_values(ascending = True).plot(kind='barh')
sns.boxplot(x =  'dist',y='price',data=snd)
sample.groupby(['grade','class'])[['math']].mean()
sample.groupby(['grade'])['math','chinese'].mean()
sample.groupby('class')['math'].agg(['mean','min','max'])# 透视表分析
snd.pivot_table(values='price',index='district',columns='subway',aggfunc=np.mean).plot(kind='bar')

数据切片

sample['a']
sample.ix[:,'a']
sample[['a']]
sample.ix[0:2, 0:2]sample[sample.score > 70]
sample[(sample.score > 70) & (sample.group ==1)]
sample.query('(group ==2) |(group == 1)')
sample[sample['score'].between(70,80,inclusive=True)]
sample[sample['name'].isin(['Bob','Lindy'])]
sample[sample['name'].str.contains('[M]+')]ndf = df[df.A>df.B][df.A<df.B+datetime.timedelta(days=365)]

时间处理

data['time'] = pd.to_datetime(data['time'],format='%Y-%m-%d %H:%M:%S')
data["weekday"]=data["time"].dt.weekday
data["year"]=data["time"].dt.year
data["quarter"]=data["time"].dt.quarter
data["hour"]=data["time"].dt.hour
data["month"]=data["time"].dt.month
  • 时间窗口处理内容待补

单行数据处理

data["new_col"]=data["ori_col"].map(fun_name)lambda x:3 if x==-8 else x
lambda x:x-1
lambda x:0 if pd.isnull(x)  else 1 # 若为空则为0 不为空为1

正确的赋值操作

data.loc[(data['A']==5),'C']='是'
data.loc[(data['A'].str.contains('团队')) & (data['B']>=40),'C']='是'

阿佐数据分析python小抄【pandas基础数据处理】相关推荐

  1. 数据分析:numpy和pandas基础操作详解

    数据处理基础 numpy基础 1.numpy创建数组及基础属性 2.数组的特点 3.创建常见数组 4.数组数据类型 5.生成随机数 6.一维数组索引 7.布尔索引 8. 多维数组的索引 9.实际问题 ...

  2. 计算机应用基础万能小抄,计算机应用基础小抄

    计算机应用基础小抄Tag内容描述: 1.计算机应用基础网考选择题1.一般认为,世界上第一台电子数字计算机诞生于1946年.2.计算机当前已应用于各种行业.各种领域,而计算机最早的设计是针对科学计算.3 ...

  3. python小习题_python基础小练习

    一.选择题 1.如果变量x = 10,那么,请选择x %= 3的结果为(): A.3. B.2. C.1. D.Error. 2.在python3x解释器中,'胡辣汤'.split('汤')的执行结果 ...

  4. 【Python】简单而不简约:一份Python小抄奉上

    公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 本文主要是对Python中常见的6种数据类型操作进行了汇总: Numbers(数字) String(字符串) List( ...

  5. 银行营销数据分析---Python(numpy、pandas、matplotlib)

    数据分析[Python] 项目介绍 我的理解 了解数据 源数据解析 源数据概况 数据处理 数据分析 数据展示分析 影响因素分析 分析总结 项目介绍 数据来源:kaggle银行营销数据 工具:Pytho ...

  6. python-cheatsheet,一款很全的Python小抄库

    最近开始整理自己写过的系列文章,发现草稿箱竟然有好多存货,比如这一篇,原计划 2020 年 11 月发布,好家伙,这都 2021 年 8 月了. 最近这两天先补齐一下吧,本篇文章属于 <Pyth ...

  7. python小练习--GUI基础

    文章目录 练习1:体验 tkinter 模块实现点击按钮的事件处理 练习2:了解组件,并尝试面向对象编写程序 练习3:组件label的使用 1.显示文字 2. label的文本格式操作 3.显示图像 ...

  8. python小测验3_python基础小测试

    def is_int(int_num): """ check whether int_num is integer! """ if isin ...

  9. python怎么做彩票概率_小白学数据小抄放送 Python,R,大数据,机器学习

    原标题:小白学数据小抄放送 Python,R,大数据,机器学习 大数据文摘作品,转载要求见文末 作者 | Elaine,田桂英,Aileen 导读:前段时间小白学数据专栏出了一期Python小抄表,后 ...

  10. 这份 python 在线小抄,要多全有多全!

    今天给大家分享老曾制作的Python cheat sheet,直接看图⬇️ 小抄资料获取 关注左侧[python自留地] 回复 20002 对于刚刚学习或者不经常用Python的人来说,对编程语言的细 ...

最新文章

  1. 省钱方便网上手机充话费
  2. java build path entries 为空_TOOLFK工具-在线JAVA代码执行工具
  3. CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换【转】
  4. vi 按了ctrl+s怎么办
  5. mongodb msi安装包_跟我快速学数据存储:MongoDB非关系型数据库
  6. Jeewx-Enterprise_1.1版本发布,开源微信企业号开发平台
  7. 致软件测试员——面试,你准备好了么?
  8. xsd文件转图片_原来华为手机能一键将图片转为PDF,实在太方便啦!你还不会吗?...
  9. 第二课:如何选择适合做小程序的服务器及域名?
  10. 6 安卓高德地图错误代码_高德开放平台
  11. 物联网开发笔记(58)- 使用Micropython开发ESP32开发板之控制2.90寸电子墨水屏模块黑白套件
  12. python程序设计基础(山东联盟)_知到APPPython程序设计基础(山东联盟)考试期末答案...
  13. 13个小众有趣的网站,只有程序员才看得懂
  14. 音圈电机工作原理与直线电机的对比
  15. 基于java大学生创业众筹系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  16. P7 | spur-suppression PLL (TCAS II-2007-08)
  17. 一.了解 iOS 操作系统架构
  18. ORACLE有EXCEL中trend函数,excel线性回归拟合线Trend函数是这样来使用的
  19. 和为K(二进制枚举和深搜)
  20. 你是不是经常套现~判断你的消费是否有积分的方法

热门文章

  1. 二级c语言考试改卷标准,计算机二级c语言考试技巧
  2. 二级c语言编程修改out文件夹,国家二级计算机c语言考试 程序设计题最后一题 怎么改out.dat文件 直接在文件里面给出答案...
  3. 调用地图JS/API只显示一个省
  4. 在企业级管理软件领域,国内尚没有“好”产品
  5. 计算机应用基础题excel,计算机应用基础专练习题excel.doc
  6. java 高级工程师要求
  7. php js的视频教程,【JS视频教程推荐】2021年最值得推荐的5个JavaScript视频教程
  8. 操作系统实验报告fcfs算法c语言,操作系统实验报告 作业调度实验报告...
  9. 10万伪原创同义词替代词库ACCESS/EXCELL数据库
  10. Linux下编写简易取号机系统,linux socket编程问题,下面是我做的一个简单的模拟银行排队叫号系统。...