1.Python基础常识
(1)print() 函数
- print()函数让机器表达**()**中的所有信息
# 表达数字
print(666)
# 表达文字
print('机器学习')
# 同时表达多个词语与数字,用,将它们分开
print('人生苦短','我学python','666')
(2)3中最常见的数据类型
- 字符串:文本数据类型,要带上引号,例如 ‘xiaodong’,‘666’ #单双引号都可以
- 整数:不含小数点的数字:例如 666
- 浮点数:含小数点的数字,例如 6.66
(3)任何值都可以通过 = 赋值变量
- 变量 = 值
- 将值赋予对应的变量
# 通过=,变量可以被任何中文、英文、数字甚至是表格赋值。
小明='希望'
print(小明)
#
小明 = '(^-^)V'
print(小明)
(4)代码运行:点击运行或使用Enter+Ctrl即可。
2.机器学习入门
- 什么是机器学习?
- 目前机器学习的应用领域有哪些?
- 机器学习的2大主要类别监督式学习与非监督式学习的具体解析。
机器学习所需的核心库:
3.Pandas常见操作
(1)Pandas库的导入
#导入Pandas库
import pandas as pd
(2)导入外部数据
用到的是Pandas里的 read_x(),x 表示待导入文件的格式
#导入.xlsx文件
import pandas as pd
df = pd.read_excel()
#导入.csv文件
import pandas as pd
df = pd.read_csv()
#导入.txt文件
import pandas as pd
df = pd.read_table()
(3)Pandas 数据结构
Pandas有两类数据结构:
- Series-序列:任一类型数据的一维数组;你可以理解为表格中的列。
- DataFrame-数据框:不同类型数据的二维数组;你可以为数据表格。
(4)Pandas 基础操作
了解数据概况:
- info()函数,了解数据总体情况,包括行数,列数,各列名称,非空记录数,以及数据类型等
- head()函数,默认了解前5行的数据,你可以更改()里的数字
- describe()函数,描述所有的数字型变量,包括平均值、标准差…(count / mean / std / min / max)等
[ ]/( )的使用:
- []用于查询列
- 如果你要查询特定的列,则使用[ ],例如[‘price’]
- 如果你要查询多个列,可以使用列表的方式,你可以写成[[‘price’],[‘user_rating’]]
- ( )常出现在函数中
- 例如info(),describe()
去除变量:
- drop 函数(默认对行,axis = 1 为列,inplace表示直接替换掉原有数据)
#发现了unname 0这个奇怪的变量,需要进行清理
app.drop('Unnamed: 0',axis=1,inplace=True)
#drop默认是对行
#inplace表示直接替换掉原有数据
#同样可以用位置来举
#app.drop(app.columns[0],axis=1,inplace=True)
(5)新增变量:新增新的特征变量操作
(6)匿名函数:
匿名函数,顾名思义就是没有名字的函数,也就是省略了def定义函数的过程。lambda只是一个表达式,没有函数体,lambda使用方法如下:
# arg1,arg2,arg3 表示具体的参数,expresstion表示参数要执行的操作
lambda arg1,arg2,arg3,...:expresstion
现在我们分别利用普通函数和匿名函数两种方式来建立一个两数想加的函数,让大家看看两者的不同。
# 普通函数如下:
def two_sum(x,y):
result = x + y #前面必须Tab空行
return result
two_sum(1,2)
# 匿名函数如下
f = lambda x,y:x+y
f(1,2)
总结:匿名函数比普通函数简洁得多,也是比较常用,大家务必熟练掌握。
(7)apply() 函数主要用于对DataFrame中的某一colume 或 row 中的元素执行相同的函数操作。需要和apply结合使用。
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],
columns = ['C1','C2','C3'] )
df
# 对C1列中的每一个元素加1
df['C1'].apply(lambda x:x+1)
(7)if……else 控制流
(7)value_counts() 函数
- pandas 的value_counts()函数可以对Series里面的每个值进行计数并且排序(注:只能对series,不能对dataframe做操作)
示例1:
示例2:
(8)groupby() 函数
- groupby([‘你想分类的维度(数据集某字段)’])[‘你想查看的数据维度(数据集某字段’])
(9)使用pd.cut() 和** bins**将数据分组
#针对price变量创建分组,并查看各分组内的价格分布
bins=[0,2,10,300]#创建分组
labels=['<2','<10','<300']#为组创建标签名称
app['price_new']=pd.cut(app.price,bins,right=False,labels=labels)#创建新变量price_new
app.groupby(['price_new'])['price'].describe()#查看price_new分组中的价格分布
用bins实现数值变量分组
- 第一步:创建分组
- 第二步:为创建的组命名
- 第三不:创建新的变量 “xxx”
图解见下图:(适合单(数值)变量分析)
更多Pandas库的函数使用说明,可以至Pandas中文网,其中有详细的Pandas库讲解:
Pandas中文网
(10)选择多个满足条件的行,建立新的数据框用于数据分析(数据预处理)
# 1. 创建新的dataframe app5
top5= ['Games','Entertainment', 'Education', 'Photo & Video','Utilities'] # 通过文本筛选满足条件的行
app5 = app[app.prime_genre.isin(top5)] # isin
# 2.选择满意条件的行(基准条件为数值变量)
import pandas as pd
df= pd.DataFrame([['A1','张通',101,31,'2018-08-08'],['A2','李谷',102,45,'2018-08-09'],
['A3','孙凤',103,23,'2018-08-10'],['A4','赵桓',104,240,'2018-08-11'],
['A5','赵桓',104,240,'2018-08-12']],
columns = ['订单编号','客户姓名','唯一识别码','年龄','成交时间'])
df
df[df['年龄']< 200] # 单个条件 | 选择年龄小于200的数据
df[(df['年龄']< 200) & (df['唯一识别码']< 102)] # 传入条件多个
# 案例二来自对比python.P96
(11)可视化包的导入:Seaborn 与 Matplotlib
#导入可视化包
import matplotlib.pyplot as plt # matplotlib 定制化
import seaborn as sns # seaborn 可调参数少
%matplotlib inline # 用处:生成一张图,在notebook中显示
你要展现怎样的数据关系?(可参考以下关系):
-
比较-箱线图/折线图/柱状图
-
分布-直方图
-
趋势-折线图
-
关系-散点图
Python 数据可视化的关键步骤: -
确定你要使用的图表
-
确定画布大小
-
确定x轴与y轴
-
确定数据来源
相关代码:
# 调整图片大小
plt.figure(figsize=(200,200))
# 绘制折线图
sns.relplot(x="prime_genre", y="user_rating",kind='line',
data=app5)
# 绘制直方图
sns.distplot(app2['price']
# 绘制箱型图
ns.boxplot(x='price',y='prime_genre',data=app5[app['paid']==1])
# 绘制散点图
sns.scatterplot(x='price',y='user_rating',data=app1)
# 绘制柱形图
sns.barplot(x='prime_genre',y='user_rating',hue='paid',data=app5)
# 绘制计数柱状图
## 示例1
sns.countplot(y='prime_genre',hue='paid',data=app,order=app['prime_genre'].value_counts().index)
plt.tick_params(labelsize=20)
## 示例2
绘制计数柱状图呈现免费/付费App的评分分布)
sns.countplot(x='paid',hue='rating_level',data=app)
# 绘制热力图,展示数值变量之间的相关关系
## 结构1
app[['user_rating','price','size_mb']].corr()
sns.heatmap(app[['user_rating','price','size_mb']].corr())
## 结构2
q4=['user_rating','price','size_mb']
app[q4].corr()
sns.heatmap(app[q4].corr())
注:
(12)Jupyter Notebook使用攻略
Python·Jupyter Notebook各种使用方法记录
(小伙伴也可以自己百度/知乎/简书,获得更多惊喜哦!)
(13)数据导入教程:绝对路径 & 相对路径