第四章
1.导入数据
a)导入.xlsx 格式excel
read_excel( )
- 导入指定sheet: 设定sheet_name参数,来指定要导入哪个Sheet的文件。
- 行索引index_col:表示用.xlsx文件中的第几列做行索引,从0开始计数。
- 列索引header:将本地文件导入DataFrame时,默认使用源数据表第一行作为列索引,也可以通过设置header参数来设置列索引
- 指定导入列usecols: 本地文件列数太多,又不需要那么多列时,就可以通过设定usecols参数来指定要导入的列
b)导入csv文件
read_csv() :
- read_csv() 函数默认文件中的数据都是以逗号分开的,但是有的文件不是用逗号分开的,这个时候就需要人为指定分隔符号,否则就会报错。
- 常见的分隔符号:逗号、空格,制表符(\t)sep = " " 指明读取行数
- nrows:有一个几百兆的文件,想了解一下文件里有哪些数据,这个时候没必要把全部数据都导入,只要看到前面几行即可,因此只要设置nrows参数。
- 指定编码格式 encoding :Python用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8。
- CSV(逗号分隔) (.csv)格式的文件,导入的时候需要把编码格式更改为gbk,若使用UTF-8会报错CSVUTF-8(逗号分隔)(.csv)格式的文件,导入时需要加encoding参数。
- 中文路径: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()