1、数据处理
1.1 数据导入
(1)数据的存在形式:
(2)导入CSV文件:
使用read_csv函数导入CSV文件;
read_csv函数语法:read_csv(file, encoding);
示例:
from pandas import read_csv;
df=read_csv('C://Users//zxysnowy//Desktop//ll.csv','utf-8')
(3)文本编辑软件notepad++:
https://notepad-plus-plus.org/download/v6.8.3html;可以修改文本的编码
(4)导入文本文件(比csv文件更加*)
使用read_table函数导入普通文本文件;
read_table函数语法:read_table(file,names=[列名1,列名2,...],sep="",encoding,...);
file:文本路径;
names:列名,默认为文件的第一行作为列名;
sep:分隔符,默认为空,表示导入为第一列;
encoding:设置文件编码,在导入中文的时候需要设置UTF-8.
from pandas import read_table;
ddf=read_table('C://Users//zxysnowy//Desktop//ww.txt',names=
['age','name'],sep=',',encoding='utf-8')
(5)导入excel文件
使用read_excel函数导入Excel文件;
read_excel函数的语法:read_excel(filename,sheetname,header)
sheetname:sheet的名字;
header:列名,默认为文件中的第一行作为列名。
from pandas import read_excel;
d1f=read_excel('C://Users//zxysnowy//Desktop//ww.xls',sheetname='dd')
1.2 数据导出
(1)导出文本文件
to_csv函数语法:
to_csv(filePath,sep=",",index=TRUE,header=TRUE)
参数:
filePath:导出的文件路径
sep:分隔符,默认为逗号(“,”),也就是以逗号为分隔符;
index:是否导出行序号,默认为TRUE,也就是导出行序号;
header:是否导出列名,默认为TRUE,也就是导出列名。
示例:
d1f.to_csv('C://Users//zxysnowy//Desktop//ss.csv',index=False)
1.3 重复值的处理(重复记录)
把数据结构中,行相同的数据只保留一行;
函数语法:drop_duplicates();
1.4 缺失值处理
(1)缺失值的产生
有些信息暂时无法获取;
有些信息被遗漏或者错误处理了。
(2)缺失值的处理方式
数据补齐(平均值补齐等方式);
删除对应缺失行(减少缺失值堆对数据整体的影响);
不处理(单身人士)。
(3)缺失值处理
dropna函数作用:
去除数据结构中值为空的数据;
dropna函数语法:dropna()
(4)空格值处理
strip函数作用:清除字符型数据左右的空格;
strip函数语法:strip()。
示例:d1f['name'].str.strip() #str为strip的属性
1.5 字段的抽取
字段抽取,是根据已知列数据的开始和结束位置,抽取出新的额列。
字段截取函数:slice(start,stop)
参数说明:start为开始位置;# >=
stop为结束位置。# <</font>
示例: 138 | 0013 | 8000
运营商| 地区 | 号码
示例:
from pandas import read_csv;
df=read_csv('C://Users//zxysnowy//Desktop//ss.csv',encoding='utf-8')
df['电话']=df['电话'].astype(str) #转成字符串
#运营商
yy=df['电话'].str.slice(0,3);
#地区
dq=df['电话'].str.slice(3,7);
#号码段
hmd=df['电话'].str.slice(7,11);
1.6 字段的拆分
字段拆分,是指按照固定的字符,拆分已有字符串;
字符分割函数:split(sep, n, expand=False)
参数说明:
sep:用于分割的字符串;
n:分割为多少列;
expand:是否展开数据框,默认为False.
返回值:
如果expand为True,则返回DataFrame;
如果expand为False,则返回Series.
Apple Ipad mini2
品牌 产品名
ddf=df['tel'].str.split(' ',1,True)
1.7 记录抽取
记录抽取,是指根据一定的条件,对数据进行抽取;
记录抽取函数:dataframe[condition];
参数说明:condition 过滤的条件
返回值:Dataframe;
常用的条件类型:
(1)比较运算
大于(>),小于(<</font>),大于等于(>=),小于等于(<=),不等于(!=)
例如:df[df.comments > 1000];
(2)范围运算
between(left,right)
例如:df[df.comments.between(100,1000)]; #左右都包含=
(3)空值匹配
pandas.isnull(column)
例如:df[pandas.isnull(df.title)]
(4)字符匹配
str.contains(patten,na=False)
例如:df[df.title.str.contains('台电',na=False)]
(5)逻辑运算
与(&),或(|),取反(not)
例如:df[(df.comments>=1000)&(df.comments<=10000)]
与上面的(df[df.comments.between(100,1000)];)等价
df[pandas.isnull(df.title)]#将标题为null的过滤
1.8 随机抽样
随机抽样,是指随机从数据中,按照一定的行或者比例抽取数据;
随机抽样函数:numpy.random.randint(start,end,num);
参数说明:start 范围的开始值 #一般为0
end 范围的结束值 #一般为长度
number 抽样个数
返回值:行数的索引值序列
1.9 记录合并
记录合并,是指将两个结构相同的数据框,合并成一个数据框;
记录合并函数:concat([dataFrame1,dataFrame2,...])
返回值:DataFrame
示例:df=pandas.concat([df1,df2,df3])
2.0 字段合并
字段合并,是指将同一个框中的不同列,进行合并,形成新的列。
字符合并方法:x=x1+x2+...
参数说明:x1 数据列1
x2 数据列2
... 任意多个数据列
返回值:Series 合并后的序列
注意:如果是逻辑型或者数值型需要转换成字符型;
2.1 字段匹配
字段匹配,是指不同结构的数据框,按照一定的条件进行合并。
字段匹配函数:merge(x, y, left_on, right_on)
参数说明:x 第一个数据框
y 第二个数据框
left_on 第一个数据框用于匹配的列 #id
right_on 第二个数据框用于匹配的列 #id
返回值:DataFrame
2、简单计算
简单计算,就是通过对字段进行加、减、乘、除等四则运算,计算出来需要的字段。
result= df.price*df.num;
df['sum']=result; #在表后面加上一列
3、数据标准化
数据标准化,是指将数据按照比例缩放,使落入到特定区间,一般我们使用0-1标准化;
x*=(x-min)/(max-min);
4、数据分组
数据分组,根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同区间部分来研究,以揭示其内在的联系和规律性;
cut函数:cut(series, bins, right=True, labels=NULL)
参数:
series:需要分组的数据;
bins:分组的划分数组;
right:分组的时候,右边是否封闭;
labels:分组的自定义标签,可以不自定义。
5、日期转换
日期转换,是指将字符型的日期格式的数据,转换成为日期型数据的过程;
日期转换函数:
date=to_datetime(dateString, format);
6、日期格式化
日期格式化:是指将日期型的数据,按照给定的格式,转为字符型的数据;
日期格式化函数:
apply(lambda x:处理逻辑)
datetime.strftime(x,format)
7、日期抽取,是指从日期格式里面,抽取出需要的部分属性
抽取语法:datetime列.dt.property