如何做网站维护,企业怎么样上各大网站做宣传,天津几个区分别是,顺德大良哪家做网站好基础知识在数据分析中就像是九阳神功#xff0c;熟练的掌握#xff0c;加以运用#xff0c;就可以练就深厚的内力#xff0c;成为绝顶高手自然不在话下#xff01;
为了更好地学习数据分析#xff0c;我对于数据分析中pandas这一模块里面常用的函数进行了总结。整篇总结熟练的掌握加以运用就可以练就深厚的内力成为绝顶高手自然不在话下
为了更好地学习数据分析我对于数据分析中pandas这一模块里面常用的函数进行了总结。整篇总结在详尽且通俗易懂的基础上我力求使其有很强的条理性和逻辑性所以制作了思维导图对于每一个值得深究的函数用法我也会附上官方链接方便大家继续深入学习。
文章中的所有代码都会有讲解和注释绝大部分也都会配有运行结果这样的话整篇总结篇幅量自然不小所以我分成了上下两篇这里是上篇下篇在次条。
1. 导入模块
import pandas as pd # 这里用到的是pandas和numpy两个模块
import numpy as np
2. 创建数据集并读取
2.1 创建数据集
我构造了一个超市购物的数据集该数据集属性包括订单ID号id、订单日期date、消费金额money、订单商品product、商品类别department、商品产地origin。
# 列表和字典均可传入DataFrame我这里用的是字典传入
datapd.DataFrame({
id:np.arange(101,111), # np.arange会自动输出范围内的数据这里会输出101~110的id号。
date:pd.date_range(start20200310,periods10), # 输出日期数据设置周期为10注意这里的周期数应该与数据条数相等。
money:[5,4,65,-10,15,20,35,16,6,20], # 设置一个-10的坑下面会填好惨自己给自己挖坑幸亏不准备跳~
product:[苏打水,可乐,牛肉干,老干妈,菠萝,冰激凌,洗面奶,洋葱,牙膏,薯片],
department:[饮料,饮料,零食,调味品,水果,np.nan,日用品,蔬菜,日用品,零食], # 再设置一个空值的坑
origin:[China, China,America,China,Thailand,China,america,China,China,Japan] # 再再设置一个america的坑
})
data # 输出查看数据集
输出结果2.2 数据写入和读取
data.to_csv(shopping.csv,indexFalse) # indexFalse表示不加索引否则会多一行索引
datapd.read_csv(shopping.csv)
3. 数据查看
3.1 数据集基础信息查询
data.shape # 行数列数
data.dtypes # 所有列的数据类型
data[id].dtype # 某一列的数据类型
data.ndim # 数据维度
data.index # 行索引
data.columns # 列索引
data.values # 对象值
3.2 数据集整体情况查询
data.head() # 显示头部几行默认5行
data.tail() # 显示末尾几行默认5行
data.info() # 数据集相关信息概览索引情况、列数据类型、非空值、内存使用情况
data.describe() # 快速综合统计结果
4. 数据清洗
4.1 查看异常值
当然现在这个数据集很小可以直观地发现异常值但是在数据集很大的时候我用下面这种方式查看数据集中是否存在异常值如果有其他更好的方法欢迎传授给我。
for i in data:
print(i: str(data[i].unique())) # 查看某一列的唯一值
输出结果我们发现该数据集中money存在一个负值department存在一个空值以及origin存在大小写问题。4.2 空值处理
4.2.1 空值检测
data.isnull()# 查看整个数据集的空值data[department].isnull()# 查看某一列的空值
data.isnull() # 查看整个数据集的空值
data[department].isnull() # 查看某一列的空值
输出结果将空值判断进行汇总更加直观ascending默认为True升序。
data.isnull().sum().sort_values(ascendingFalse)
输出结果4.2.2 空值处理
pandas.DataFrame.fillnavalue Nonemethod Noneinplace False
value用于填充的值可以是具体值、字典和数组不能是列表
method填充方法有 ffill 和 bfill 等
inplace默认无False如果为True则将修改此对象上的所有其他视图。
data[department].fillna(methodffill) # 填充上一个值即填充“水果”
输出结果data[department].fillna(methodbfill) # 填充下一个值即填充“日用品”
data[department].fillna(value冷冻食品,inplaceTrue) # 替换为具体值并且在原对象值上进行修改
输出结果4.3 空格处理
只针对object类型数据
for i in data: # 遍历数据集中的每一列
if pd.api.types.is_object_dtype(data[i]): # 如果是object类型的数据则执行下方代码
data[i]data[i].str.strip() # 去除空格
data[origin].unique() # 验证一下
输出结果array([‘China’, ‘America’, ‘Thailand’, ‘america’, ‘Japan’], dtypeobject)
4.4 大小写转换
data[origin].str.title() # 将首字母大写
data[origin].str.capitalize() # 将首字母大写
data[origin].str.upper() # 全部大写
data[origin].str.lower() # 全部小写
4.5 数据替换
data[origin].replace(america,America,inplaceTrue) # 将第一个值替换为第二个值inplace默认为False
data[origin]
输出结果data[money].replace(-10,np.nan,inplaceTrue) # 将负值替换为空值
data[money].replace(np.nan,data[money].mean(),inplaceTrue) # 将空值替换为均值
data[money]
输出结果4.6 数据删除
方法一
data1 data[data.origin ! American] #去掉origin为American的行
data1
data2data[(data ! Japan).all(1)] #去掉所有包含Japan的行 不等于Japan的行为真则返回
data2
方法二
data[origin].drop_duplicates() # 默认删除后面出现的重复值即保留第一次出现的重复值
输出结果data[origin].drop_duplicates(keeplast) # 删除前面出现的重复值即保留最后一次出现的重复值
输出结果更多关于pandas.DataFrame.drop_duplicates的用法戳下面官方链接https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html#pandas.DataFrame.drop_duplicates
4.7 数据格式转换
data[id].astype(str) # 将id列的类型转换为字符串类型。
常见的数据类型对照4.8 更改列名称
data.rename(columns{id:ID, origin:产地}) # 将id列改为ID将origin改为产地。
输出结果