准备工作

import numpy as np
import pandas as pd

倒入文件或创建一个数据表

df = pd.DataFrame(pd.read_csv('name.csv',header=1))
df = pd.DataFrame(pd.read_excel('name.xlsx'))
pd.read_table(filename)# 从限定分隔符的文本文件导入数据
pd.read_excel(filename)# 从Excel文件导入数据
pd.read_sql(query, connection_object)# 从SQL表/库导入数据
pd.read_json(json_string)# 从JSON格式的字符串导入数据
pd.read_html(url)# 解析URL、字符串或者HTML文件,抽取其中的tables表格
pd.read_clipboard()# 从你的粘贴板获取内容,并传给read_table()
pd.DataFrame(dict)# 从字典对象导入数据,Key是列名,Value是数据

倒入各种格式的文件操作

# 创建数据表,下面两个数据表是以下所有操作的数据支持
# pd.DataFrame(np.random.rand(20,5))# 创建20行5列的随机数组成的DataFrame对象
df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
"date":pd.date_range('', periods=6),
"city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
"age":[23,44,54,32,34,32],
"category":['100-A','100-B','110-A','110-C','210-A','130-F'],
"price":[1200,np.nan,2133,5433,np.nan,4432]},
columns =['id','date','city','category','age','price']) df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008],
"gender":['male','female','male','female','male','female','male','female'],
"pay":['Y','N','Y','Y','N','Y','N','Y',],
"m-point":[10,12,20,40,40,40,30,20]})

一、查看数据表信息

  包含操作:

    • 查看维度
    • 查看数据表基本信息
    • 查看每一列/指定列数据格式
    • 查看数据表每一单元格是否为空值
    • 查看指定列值
    • 查看数据表
    • 查看表头
    • 查看前/后n行数据
    • 查看数值型列的汇总统计
    • 查看DataFrame对象中每一列的唯一值和计数
print(df.shape) # 查看维度、行数和列数(x*y)
print(df.info())# 查看数据表基本信息(维度、列名称、数据格式、所占空间等)
print(df.dtypes)# 查看每一列数据的格式
print(df['price'].dtype) # 查看指定列的数据格式
print(df.isnull()) # 查看数据表每一单元格是否为空值
print(df['age'].unique()) # 查看指定列的值(去重)
print(df.values)# 查看数据表
print(df.columns)# 查看表头
print(df.head(3)) # 查看前x行数据,括号内为空时默认为10
print(df.tail(3)) # 查看后x行数据,括号内为空时默认为10
print(df.describe()) # 查看数值型列的汇总统计
print(df.apply(pd.Series.value_counts)) # 查看DataFrame对象中每一列的唯一值和计数

二、数据表清洗

  包含操作:

    • 重命名列名
    • 检查空值
    • 删除包含空值的行/列
    • 删除所有小于n的非空值的行
    • 填充空值
    • 清除空格
    • 更改数据格式
    • 删除指定列中重复的值
    • 更改数据
df.columns = ['a','b','c']# :重命名列名
print(df.isnull())# 检查DataFrame对象中的空值,并返回一个Boolean数组
print(df.notnull())# 检查DataFrame对象中的空值,并返回一个Boolean数组 print(df.dropna())# 删除所有包含空值的行
print(df.dropna(axis=1))# 删除所有包含空值的列
print(df.dropna(axis=1,thresh=n))# 删除所有小于n的非空值的行 print(df.fillna(value=0)) # 用数字0填充空值,返回值为填充后的表信息
print(df['price'].fillna(df['price'].mean())) # 使用指定列(price)的均值填充指定列(price)的空值,返回值为填充后的列信息 df['city']=df['city'].map(str.strip) # 清除指定字段(city)的字符空格,注意清洗完数据后要重新赋值回去
df['city']=df['city'].str.lower() # 支持str的操作,这里指变为小些,注意清洗完数据后要重新赋值回去
print(df['city']) print(df['age'].astype('int')) # 更改数据格式,这里的操作是将数据转为int,不需要重新赋值
print(df.rename(columns={'category': 'category-size'})) # 更改表头 print(df['city'].drop_duplicates()) # 删除指定列中重复的值(保留前面的,删除后面的)
print(df['city'].drop_duplicates(keep='last'))# 删除指定列中重复的值(保留后面的,删除前面的) print(df['city'].replace('sh', 'shanghai')) # 更改数据

三、数据表操作

  包含操作:

    • 交集、并集、左连接、右连接
    • 设置索引
    • 排序
    • 分组标记
    • 分列并创建数据表
df_inner=pd.merge(df,df1,how='inner')  # 交集,少匹配合并
df_left=pd.merge(df,df1,how='left') # 左连接,按左表为准,右表不够的用NaN补
df_right=pd.merge(df,df1,how='right') # 右连接,按右表为准,左表不够的用NaN补
df_outer=pd.merge(df,df1,how='outer') # 并集,多匹配合并
print(df_inner)
print(df_left)
print(df_right)
print(df_outer) print(df_inner.set_index('id')) # 设置索引列,这里索引设置的是id列
print(df_inner.sort_values(by=['m-point'])) # 按照指定列排序,默认升序
print(df_inner.sort_values(by=['m-point']),ascending=False) # 按照指定列排序,指定降序
print(df_inner.sort_index()) # 按照索引排序,默认升序 # group的值按price的大小显示,大于3000显示high,小于3000显示low
df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
df_inner.loc[(df_inner['city'] == 'Beijing') & (df_inner['gender'] == 'male'), 'sign']=1# 对复合多个条件的数据进行分组标记
print(df_inner) # 对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size
print(pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])) # 将完成分裂后的数据表和原df_inner数据表进行匹配
split = pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])
df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
print(df_inner)

四、数据提取

  包含操作:

    • 提取单行/区域行的值
    • 重设索引
    • 按位置提取数据
    • 按索引提取数据
    • 判断数据值
    • 提取指定字符并生成数据表
"""
主要用到的三个函数:loc,iloc和ix
- loc函数按标签值进行提取
- iloc按位置进行提取
- ix可以同时按标签和位置进行提取。
"""
print(df_inner.loc[3])# 按索引提取单行的数值,这里提取的是第四行
print(df_inner.iloc[0:5])# 按索引提取区域行数值,这里提取的是0到四行 df_inner.reset_index()# 重设索引
df_inner=df_inner.set_index('date') # 将指定字段设置为索引,这里用的日期
print(df_inner[:'2013-01-04'])# 切片提取数据,这里切的日期,需要先将日期设为索引 # - 使用iloc按位置区域提取数据
print(df_inner.iloc[:3,:2]) #冒号前后的数字不再是索引的标签名称而是数据所在的位置,这里表示从0开始,前三行,前两列。
print(df_inner.iloc[[0,2,5],[4,5]]) #提取第0、2、5行,4、5列 # - 使用ix按索引标签和位置混合提取数据
print(df_inner.ix[:'2013-01-03',:4]) #2013-01-03号之前,前四列数据 print(df_inner['city'].isin(['Beijing']))# 判断city列的值是否为北京 print(df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])])# 判断city列里是否包含beijing和shanghai,然后将符合条件的数据提取出来 print(pd.DataFrame(df_inner['city'].str[:3]))# 提取前三个字符,并生成数据表

五、数据筛选

  包含操作:与/或/非/大于/小于/等于/不等于

# 使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。
print(df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'shanghai'), ['id','city','age','category','gender']])
print(df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'shanghai'), ['id','city','age','category','gender']] )
print(df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']]) # 对筛选后的数据按city列进行计数
print(df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].city.count()) # 使用query函数进行筛选
print(df_inner.query('city == ["beijing", "shanghai"]')) # 对筛选后的结果按price进行求和
print(df_inner.query('city == ["Shenzhen", "shanghai"]').price.sum())

六、数据处理

  包含操作:计数汇总(主要用groupby)

# 主要函数是groupby和pivote_table
print(df_inner.groupby('city').count())# 对所有的列进行计数汇总
print(df_inner.groupby('city')['id'].count())# 按city对id字段进行计数
print(df_inner.groupby(['city','price'])['id'].count())# 对两个字段进行汇总计数
print(df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]) )# 对city字段进行汇总,并分别计算prince的合计和均值

七、数据统计

  包含操作:

    • 数据采样(可设置权重)
    • 数据表描述性统计
    • 标准差和方差
    • 相关性统计
    • 所有列的均值
    • 每一列的最大值、最小值、中位数、标准差
# 数据采样,计算标准差,协方差和相关系数
print(df_inner.sample(n=3))# 简单的数据采样(随机取3行数据) # 手动设置采样权重,这里指3/4/5的权重比较高,随机取时概率较大
weights = [0, 0, 0, 0.5, 0.5, 0.5]
print(df_inner.sample(n=2, weights=weights)) print(df_inner.sample(n=6, replace=False))# 采样后不放回
print(df_inner.sample(n=6, replace=True))# 采样后放回 # 数据表描述性统计
print(df_inner.describe().round(2).T) #round函数设置显示小数位,T表示转置 # 标准差和协方差
print(df_inner['price'].std())# 计算列的标准差
print(df_inner['price'].cov(df_inner['m-point']))# 计算两个字段间的协方差
print(df_inner.cov())# 计算数据表中所有字段间的协方差 # 计算两个字段的相关性分析,相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关
print(df_inner['price'].corr(df_inner['m-point'])) print(df.describe())# 查看数据值列的汇总统计
print(df.mean())# 返回所有列的均值
print(df.corr())# 返回列与列之间的相关系数
print(df.count())# 返回每一列中的非空值的个数
print(df.max())# 返回每一列的最大值
print(df.min())# 返回每一列的最小值
print(df.median())# 返回每一列的中位数
print(df.median())# 返回每一列的标准差

八、数据输出

df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')
df_inner.to_csv('excel_to_python.csv')
df.to_sql(table_name, connection_object)# 导出数据到SQL表
df.to_json("filename")# 以Json格式导出数据到文本文件

pandas操作速查表的更多相关文章

  1. 这可能是AI、机器学习和大数据领域覆盖最全的一份速查表

    https://mp.weixin.qq.com/s?__biz=MjM5ODE1NDYyMA==&mid=2653390110&idx=1&sn=b3e5d6e946b719 ...

  2. numpy, pandas, scikit-learn cheat sheet (速查表)

    1. scikit-learn cheat sheet 官方链接如下:http://scikit-learn.org/stable/tutorial/machine_learning_map/ Oft ...

  3. python 下的数据结构与算法---2:大O符号与常用算法和数据结构的复杂度速查表

    目录: 一:大O记法 二:各函数高阶比较 三:常用算法和数据结构的复杂度速查表 四:常见的logn是怎么来的 一:大O记法 算法复杂度记法有很多种,其中最常用的就是Big O notation(大O记 ...

  4. Git 命令速查表

    Git 命令速查表 1.常用的Git命令 命令 简要说明 git add 添加至暂存区 git add-interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 ...

  5. Git 常用命令速查表(图文+表格)

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  6. 可能是史上最全的机器学习和Python(包括数学)速查表

    新手学习机器学习很难,就是收集资料也很费劲.所幸Robbie Allen从不同来源收集了目前最全的有关机器学习.Python和相关数学知识的速查表大全.强烈建议收藏! 机器学习有很多方面. 当我开始刷 ...

  7. 【Linux】【MySQL】CentOS7、MySQL8.0.13 骚操作速查笔记——专治各种忘词水土不服

    1.前言 [Linux][MySQL]CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行) 专治各种忘词,各种水土不服. - -,就是一个健忘贵的速查表:(当然不包括SQL的 ...

  8. 【转】shell速查表

    shell速查表 转自:https://www.jianshu.com/p/a98a334bfb25 1. 变量 #!/bin/bash msg="hello world" ech ...

  9. 【转】Vim速查表-帮你提高N倍效率

    Vim速查表-帮你提高N倍效率 转自:https://www.jianshu.com/p/6aa2e0e39f99 去年上半年开始全面使用linux进行开发和娱乐了,现在已经回不去windows了. ...

随机推荐

  1. SpringMVC 文件上传配置,多文件上传,使用的MultipartFile

    一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file <!-- 配置Multipa ...

  2. WPS 2019 How To Create New Sheets For Each Row In Excel?

    https://www.extendoffice.com/documents/excel/3197-excel-create-new-sheet-for-each-row.html  How To C ...

  3. Android Selinux

    https://blog.csdn.net/rikeyone/article/details/84337115   如何快速定位SElinux问题并修复? https://blog.csdn.net/ ...

  4. Fiddler如何捕捉DefaultHttpClient的HTTP请求

    实际开发中为了解决Ajax跨域请求问题,会通过一个同域的控制器在服务端代理请求目标的Web API并将结果返回.为了便于调试这类请求,我们希望通过Fiddler可以监控到这些请求.Fiddler官方给 ...

  5. VS 2013 未找到与约束contractname Microsoft.VisualStudio.Utilities.IContentTypeRegistryService......匹配的导出

    错误信息: 点击解决方案中的文件,就会提示这个错误.最近给vs2013安装了python的插件,安装了vs2017的python,可能是这两个导致了这个错误. 解决方案: 删除 C:\Users\ji ...

  6. Python变量访问权限控制

    oop1.py文件代码 # user/bin/python class Foo: def bar(self): print('ok') def hello(self, name): print(&qu ...

  7. ftp如何使用命令上传文件

    本地上传到服务器的步骤如下: 1."开始"-"运行"-输入"FTP" 2.open qint.ithot.net 这一步可以与第一步合并,在 ...

  8. ML.NET教程之情感分析(二元分类问题)

    机器学习的工作流程分为以下几个步骤: 理解问题 准备数据 加载数据 提取特征 构建与训练 训练模型 评估模型 运行 使用模型 理解问题 本教程需要解决的问题是根据网站内评论的意见采取合适的行动. 可用 ...

  9. docker swarm 英文参考资料阅读列表

    将自己在使用 docker swarm 过程中阅读的英文参考资料收集在这篇博文中,便于以后查阅与温习,顺带分享. 2017年8月5日之前阅读 My experience with Docker Swa ...

  10. zookeeper的Java客户端API

    zookeeper作为一个分布式服务框架,主要用来解决分布式数据一致性问题,对多种语言提供了API.这里主要记录下JAVA客户端API的使用. 1.创建会话 客户端可以通过创建一个ZooKeeper实 ...