对比excel,轻松学习python数据分析(读书笔记4-5章)

第四章

1.导入数据

a)导入.xlsx 格式excel

read_excel( )

  1. 导入指定sheet: 设定sheet_name参数,来指定要导入哪个Sheet的文件。
  2. 行索引index_col:表示用.xlsx文件中的第几列做行索引,从0开始计数。
  3. 列索引header:将本地文件导入DataFrame时,默认使用源数据表第一行作为列索引,也可以通过设置header参数来设置列索引
  4. 指定导入列usecols: 本地文件列数太多,又不需要那么多列时,就可以通过设定usecols参数来指定要导入的列

b)导入csv文件

read_csv() :

  1. read_csv() 函数默认文件中的数据都是以逗号分开的,但是有的文件不是用逗号分开的,这个时候就需要人为指定分隔符号,否则就会报错。
  2. 常见的分隔符号:逗号、空格,制表符(\t)sep = " " 指明读取行数
  3. nrows:有一个几百兆的文件,想了解一下文件里有哪些数据,这个时候没必要把全部数据都导入,只要看到前面几行即可,因此只要设置nrows参数。
  4. 指定编码格式 encoding :Python用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8。
  5. CSV(逗号分隔) (.csv)格式的文件,导入的时候需要把编码格式更改为gbk,若使用UTF-8会报错CSVUTF-8(逗号分隔)(.csv)格式的文件,导入时需要加encoding参数。
  6. 中文路径:engine = “python” CSV UTF-8(逗号分隔)(.csv),编码格式需要变为utf-8-sig,
    文件格式是CSV(逗号分隔)(
    .csv)格式,编码格式为gbk。

c)导入.txt文件

read_table()

d)导入sql文件

python 与数据库连接,使用pymysql
read_sql(sql,con)```python

import pymysql
con = pymysql.connect(host,user,password,db,charset)
read_sql(sql,con)

host数据库地址/本机使用localhost,
user用户名,
password密码,
db数据库名,
charset数据库编码

2.熟悉数据

df.head(n)展示前n行
df.shape 展示形状
df.info() 查看数据类型
df.describe()获取数据分布

import pandas as pd

# 导入数据
df_0 = pd.read_excel(r'C:\Users\69073\Desktop\data1.xlsx',sheet_name = 0)

# 导入指定sheet
df_1 = pd.read_excel(r'C:\Users\69073\Desktop\data1.xlsx',sheet_name = 'A健身房会员数量总计表')

# 指定导入前三列
df_2 = pd.read_excel(r'C:\Users\69073\Desktop\data1.xlsx',sheet_name = 0, usecols= [0,1,2])

# 指定第一列作为行索引  
df_3 = pd.read_excel(r'C:\Users\69073\Desktop\data1.xlsx',sheet_name = 0, index_col= 0)

# 指定第X行作为列索引,使用headers参数
print(df_0.head(5))
print(df_1.head(5))
print(df_2.head(5))
print(df_0.info())
print(df_0.describe())

第五章 数据预处理

1.缺失

info()显示每列的数据数量
用isnull()方法来判断哪个值是缺失值,如果是缺失值则返回True,如果不是缺失值则返回False

a)删除

dropna()方法默认删除含有缺失值的行,也就是只要某一行有缺失值就把这一行删除.
如果想删除空白行,只要给dropna()方法传入一个参数how = all即 可,这样就会只删除那些全为空值的行,不全为空值的行就不会被删除。

# 删除缺失值dropna()
# 删除缺失值所在的行
df_0 = df_0.dropna()
# 只删除全为空值的行,不全为空值的行不会被删除。
df_1 = df_1.dropna(how = 'all')

b)填充

fillna() fillna({‘A’:“s”}) 对A这一列填充为s

# 填充 fillna()
# 统一填充
df_0 = df_0.fillna('A')
# 按某一列填充
df_1 = df_1.fillna({"时间":"1000"})

2.重复

drop_duplicates()方法,默认对所有值进行重复值判断,且默认保留第一个(行)值。
df.drop_duplicates(subset = [‘B’,‘C’) 指定对B和C这两列进行重复值的判断。
定义删除重复项时保留哪个,默认保留第一个,也可以设置保留最后一个,或者全部不保留。
通过传入参数keep进行设置,参数 keep默认值是first,保留第一个值;last,保留最后一个值; False,即把重复值全部删除。

# 删除重复值
# 对整行做判断
df_0 = df_0.drop_duplicates()

# 对指定列去重
df_1 = df_1.drop_duplicates(subset = ['时间','会员收入(万元)'],keep = False)
# 保留最后一个值    keep = ‘last’
# 保留第一个值     keep = ‘first’
# 把重复值全部删除  keep = False

3.异常

a)异常值检测

发现异常值的方式 主要有以下三种。
● 根据业务经验划定不同指标的正常范围,超过该范围的值算作异常值。
● 通过绘制箱形图,把大于(小于)箱形图上边缘(下边缘)的点称为异常值。
● 如果数据服从正态分布,则可以利用3σ原则;如果一个数值与平均值之间的偏差超过3倍标准差,那么我们就认为这个值是异常值。

b)异常值处理

删除,填充,替换

4.转换

a)数据类型

在这里插入图片描述

可以用 info()方法获取每一列的数据类型
dtype方法获取某一列的数据类型
astype()方法对数据类型进行转换,astype后面的括号里指明要转换的目标类型。

# 数据类型转换
# 查看某一列数据类型
print(df_0['线上课程数量'].dtype)

5.索引

a)设置索引

通过给表df的columns参数传入列索引值,index参数传入行索引值 达到为无索引表添加索引的目的

b)重新设置索引

set_index()方法重新设置索引列,在set_index() 里指明要用作行索引的列的名称
set_index()方法传入两个或多个列名,我们把这种一个表中用多列来做索引的方式称为层次化索引,层次化索引一般用在某一列中含有多个重复值的情况下。

c)重命名索引

rename()方法,在rename后 的括号里指明要修改的行索引及列索引名

d)重置索引

主要用在层次化索引表中,重置索引是将索引列当作一个 columns进行返回。
reset_index()

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值