数据分析必备
pandas处理缺失数据
dropna() 过滤掉值为NaN的行
fillna() 填充缺失数据
isnull() 返回布尔数组
notnull() 返回布尔数组
补充
对数据进行处理返回一个新的结果,原数据不变,如果想要直接影响原数据需要参数inplace=Ture
数组名.iloc[0]根据行索引取值
数组名.loc[2]根据左侧标签名取值
删除操作del时 无法使用上述两个方法
pandas小例题
1.读取excel文件
直接使用pd.read_xxx('文件名')
前提是notebook和数据源文件在同一级目录,否则使用绝对路径
2.读取excel文件的指定行数据
data = pd.read_xxx("某招聘网站数据.csv",nrows = 20)
nrows=20 代表文件的前20行
data = pd.read_xxx("某招聘网站数据.csv",skiprows = [i for i in range(1,21)])
skiprows 代表跳过文件的指定行
3.读取当前目录下 某招聘网站数据.csv 文件的 positionId、positionName、salary 列
data = pd.read_csv("某招聘网站数据.csv",usecols = ['positionId','positionName','salary'])
4.读取当前目录下 某招聘网站数据.csv 文件,并在读取时将 positionId 设置为索引列
data = pd.read_csv('某招聘网站数据.csv',index_col=['positionId'])
5.读取当前目录下 某招聘网站数据.csv 文件的 positionId、positionName、salary 列,并将标题设置为 ID、岗位名称、薪资
data = pd.read_csv('某招聘网站数据.csv', usecols=[0,1,17],header = 0,names=['ID','岗位名称','薪资'])
6.读取当前目录下 某招聘网站数据.csv 文件,并不将缺失值标记为 NA
data = pd.read_csv('某招聘网站数据.csv', keep_default_na=False)
7.读取当前目录下 某招聘网站数据.csv 文件,并将[]标记为缺失值
data = pd.read_csv('某招聘网站数据.csv',na_values=['[]'])
8.读取当前目录下 某招聘网站数据.csv 文件,但不处理缺失值
data = pd.read_csv("某招聘网站数据.csv",na_filter=False)
9.读取当前目录下 某招聘网站数据.csv 文件,并将 positionId,companyId 设置为字符串格式
data = pd.read_csv("某招聘网站数据.csv", dtype={'positionId': str,'companyId':str})
pandas文本文件读取
pd.read_xxx(filepath_or_buffer,sep=',',header='infer',names=None,usecols=None,skiprows=None,skipfooter=None,converters=None,encoding=None)
# 参数说明
filepath_or_buffer:指定txt文件或csv文件所在的具体路径
sep:指定原数据集中各字段的分隔符,默认为','
header:是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称
如果原数据没有表头,需要将该参数设置为None
names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头
usecols:指定需要读取原数据中的哪些变量名
skiprows:数据读取时,指定需要跳过原数据集中开头的行数
有些表格开头是有几行文字说明的,读取时需要跳过
skipfooter:数据读取时,指定需要跳过原数据集中的末尾行数
converters:用于数据类型的转换(以字典的形式指定)
encoding:若文件有中文,指定编码
pandas Excel文件读取
pd.read_execl(io,sheetname=0,header=0,skiprows=None,skip_footer=0,index_col=None,names=None,na_values=None,thousands=None,convert_float=True)
# 参数说明
io:指定电子表格的具体路径
sheetname:指定需要读取电子表格中的第几个sheet,既可以传递整数也可以传递具体的sheet名称
header:是否需要将数据集的第一行用作表头,默认为是需要的
skiprows:读取数据时,指定跳过的开始行数
skip_footer:读取数据时,指定跳过的末尾行数
index_col:指定哪些列用作数据框的行索引(标签)
na_values:指定原始数据集中哪些特殊值代表了缺失值
thousands:指定原始数据集中的千分位符
convert_float:默认将所有的数值型字段转换为浮点型字段
converters:通过字典的形式,指定某些列需要转换的形式 {'序号':str}
pandas读取MySQL数据
import pymysql
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='',
password='',
db='',
charset='utf8',
autocommit=True
)
res = pd.read_sql('select * from user',con=conn)
pandas常用方法
df.index 读索引
df.columns 读列字段
df.values 获取数据
df.shape 获取表格的行数与列数,结果是元祖
df。dtypes 获取列字段名称存储的数据类型
df.describe 统计描述
默认只会统计数字类型的数据,非数字类型统计需要加参数include
sec_buildings.describe(include='object')
df.head() 取头部多条数据,默认读取5条
df.tail() 取尾部多条数据,默认读取5条
'''
在Dataframe中 字符串类型统一都叫做object
'''
pandas行列操作
df.rename(column={'旧列名称':'薪列名称'},inplace=True) 修改列名称 inplace=True修改原数据
添加列字段
df['列字段名']=’字段所属内容‘ 有则获取字段数据,无则添加
自定义插入位置
df.insert(3,'新列名称','新列数据') 3 要插入的索引位置
删除列字段
df.drop(column='字段名',axis=1)
添加行
df.append(df1)
获取多列数据
df[['1','2']]
过滤数据 返回布尔值
df['字段名']=='过滤的条件'
df[df['字段名']=='过滤的条件'] 布尔选择器
多个条件
(df['字段名']=='过滤的条件') & (df['字段名']=='过滤的条件')
获取品牌是众泰并且Dischange是国4的数据的品牌、name、New_price
df.loc[(df['Dischange']=='国4') & (df['品牌']== '众泰'),['品牌','Name','New_price']]