2018-12-20 16:02:29 zwx19921215 阅读数 650

python数据分析入门,作为入门文章系列主要包含以下几个内容:

1.数据的来源(本案例采用的数据来自于上一篇文章中爬取的智联招聘信息):读取数据库数据、数据写入csv文件、读取csv文件等

2.数据的处理:对载入到内存的数据进行一系列的操作(处理总共包含清洗、过滤、分组、统计、排序、计算平均数等一系列操作,本文只简单涉及了其中某几个)

3.对处理后的数据进行可视化分析等

# !/usr/bin/env python
# -*-coding:utf-8-*-
"""
@Author  : xiaofeng
@Time    : 2018/12/19 15:23
@Desc : Less interests,More interest.(数据分析入门)
@Project : python_appliction
@FileName: analysis1.py
@Software: PyCharm
@Blog    :https://blog.csdn.net/zwx19921215
"""
import pymysql as db
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt

# mysql config
mysql_config = {
    'host': '110.0.2.130',
    'user': 'test',
    'password': 'test',
    'database': 'xiaofeng',
    'charset': 'utf8'
}

"""
read data from mysql and write to local file
(从数据库中读取数据写入本地文件)
@:param page_no
@:param page_size
@:param path 文件写入路径
"""


def read_to_csv(page_no, page_size, path):
    # read from database
    database = db.connect(**mysql_config)
    if page_no > 1:
        page_no = (page_no - 1) * page_size
    else:
        page_no = 0
    sql = 'select * from zhilian limit ' + str(page_no) + ',' + str(page_size) + ''
    df = pd.read_sql(sql, database)
    print(df)
    database.close()
    # write to csv
    local = path
    df.to_csv(local, encoding='gbk')


"""
read data from remote address or local address
(读取文件从远程地址或者本地)
"""


def read_from_csv(path):
    # remote address
    # data_url = 'https://xxxx/zhilian.csv'
    # local address
    # data_url = 'G:/zhilian.csv'
    df = pd.read_csv(path, encoding='gbk')
    return df


"""
数据集的简单(过滤、分组、排序)处理
"""


def simple_op(path):
    df = read_from_csv(path)
    # top 10 :获取前10行
    print('--------------top 10-----------')
    top = df.head(10)
    print(top)
    # tail 10:获取后10行
    print('------------tail 10------------')
    tail = df.tail(10)
    print(tail)
    # filter:根据指定条件过滤
    print('-------------filter----------')
    special_jobid = df[df.JobID == 595950]
    print(special_jobid)
    special = df[(df.id >= 110) & (df.PublishDate == '2018-12-18')]
    print(special)
    # check :检查各列缺失情况
    print('-------------check----------------')
    check = df.info()
    print(check)
    print('--------------data describe-----------')
    # count,平均数,标准差,中位数,最小值,最大值,25 % 分位数,75 % 分位数
    describe = df.describe()
    print(describe)
    # 添加新列
    df2 = df.copy()
    df2['AnnualSalaryAvg'] = (df['AnnualSalaryMax'] + df['AnnualSalaryMin']) / 2
    # 重新排列指定列
    columns = ['JobID', 'JobTitle', 'CompanyName', 'AnnualSalaryMin', 'AnnualSalaryMax', 'AnnualSalaryAvg']
    df = pd.DataFrame(df2, columns=columns)
    print(df)


"""
可视化分析
"""


def visualized_analysis(path):
    df = read_from_csv(path)
    df_post_count = df.groupby('JobLactionStr')['AnnualSalaryMax'].count().to_frame().reset_index()
    # subplots(1, 1) 表示1x1个子图,figsize=(25, 8) 子图的宽度和高度
    # f, [ax1,ax2] = plt.subplots(1, 2, figsize=(25, 8)) 表示1x2个子图
    f, ax2 = plt.subplots(1, 1, figsize=(25, 8))

    sns.barplot(x='JobLactionStr', y='AnnualSalaryMax', palette='Greens_d', data=df_post_count, ax=ax2)
    ax2.set_title('各城市职位数量对比', fontsize=15)
    ax2.set_xlabel('城市')
    ax2.set_ylabel('数量')
    # 用来正常显示中文标签
    plt.rcParams['font.sans-serif'] = ['SimHei']
    # 用来正常显示负号
    plt.rcParams['axes.unicode_minus'] = False
    plt.show()


if __name__ == '__main__':
    path = 'G:/zhilian.csv'
    read_to_csv(0, 100, path)
    df = read_from_csv(path)
    simple_op(path)
    visualized_analysis(path)

控制台输出如下:

 

写入本地csv文件效果如下:

 

可视化效果如下:

 

注:由于是入门文章第一篇,所以并没有对数据分析做过深的探索,更深层次的研究将会在后续系列中呈现!

2019-01-09 21:26:03 weixin_39549161 阅读数 566

python数据分析第三方库介绍

Python本身数据分析功能不强,需要安装一些第三方库来增强它的能力,一般用的的库有Numpy、Scipy、Matplotlib、Pandas、Scikit-Learn、Keras和Gensim等。

Numpy

虽然列表可以完成基本的数组功能,但它不是真正的数组,而在数据量较大时,使用列表的速度会非常慢。因此,Numpy提供了真正的数组功能。值得强调的是,Numpy内置的函数处理数据的速度是C语言级别的,因此编程时,应尽量使用它们内置的函数。

代码1 Numpy基本操作
# -*- coding:utf-8 -*
import numpy as np
a = np.array([2,0,1,5]) #创建一维数组
print(a)
print(a[:3]) #输出数组前三个数值
print(a.min()) #输出数组中最小值
a.sort() #将a中元素从小到大排序
b = np.array([[1,2,3],[4,5,6]])
print(b*b)

Scipy

Numpy提供了多维数组的功能,但只是一般数组,不是矩阵。例如,当两个数组相乘时,只是对应元素相乘,而不是矩阵乘法。Scipy提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。
Scipy包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理以及图像处理、常微分方程求解和其他科学与工程中常用计算。
Scipy依赖于Numpy。

代码2 Scipy基本操作
# -*- coding:utf-8 -*
from scipy.optimize import fsolve
def f(x): #定义求解方程
	x1 = x[0]
	x2 = x[1]
	return [2*x1 - x2**2 -1,x1**2 - x2 -2]
result = fsove(f,[1,1])
print(result) #输出结果,为array([1.91963957,1.68501606])
from scipy import integrate
def g(x):
	return (1-x**2)**0.5
pi_2,err = integrate.quad(g,-1,1)

Pandas

Pandas功能非常强大,支持类似于SQL的数据增、删、查、改,并带有丰富的数据处理函数;支持时间序列分析功能;支持处理缺失数据等。
pandas基本数据结构是Series和DataFrame,Series就是 序列,类似于一维数组;Dataframe相当于一张二维的表格,类似于二维数组。

代码3 Pandas基本操作
import pandas as pd 
s = pd.Series([1,2,3],index=['a','b','c']) #创建一个序列s
d = pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c']) #创建一个表
pd.read_csv('data.csv',encoding = 'utf-8') #读取csv文件,一般用encoding指定编码
pd.read_excel('data.xls') #读取Excel文件,创建DataFrame

Scikit-Learn

Scikit-Learn是python下强大的机器学习工具包,包括数据预处理、分类、回归、聚类、预测和模型分析等。
创建一个机器学习很简单:

代码4 Scikit-Learn基本操作
from sklearn.linear_model import LinearRegression #导入线性回归模型
model = LinearRegression() #建立线性回归模型
model.fit(X,y) #训练监督模型
model.predict(X_new) #预测新样本
2019-08-10 12:36:34 weixin_43216249 阅读数 94

PaddlePaddle学习课程

课节1:Python数据分析处理

Python数据分析入门

波士顿房价的预测(数据分析和建模的初步知识)(附带相应知识的链接)

一、基础库介绍
1.Seaborn:

Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。但应强调的是,应该把Seaborn视为matplotlib的补充,而不是替代物。

作者:W_hy
链接:https://www.jianshu.com/p/844f66d00ac1
来源:简书

2.XGBoost:

XGBoost可以成为机器学习的大杀器,广泛用于数据科学竞赛和工业界,是因为它有许多优点:

(1.使用许多策略去防止过拟合,如:正则化项、Shrinkage and Column Subsampling等。

(2. 目标函数优化利用了损失函数关于待求函数的二阶导数

(3.支持并行化,这是XGBoost的闪光点,虽然树与树之间是串行关系,但是同层级节点可并行。具体的对于某个节点,节点内选择最佳分裂点,候选分裂点计算增益用多线程并行。训练速度快。

(4.添加了对稀疏数据的处理。

(5.交叉验证,early stop,当预测结果已经很好的时候可以提前停止建树,加快训练速度。

(6.支持设置样本权重,该权重体现在一阶导数g和二阶导数h,通过调整权重可以去更加关注一些样本

原文链接:http://blog.itpub.net/31542119/viewspace-2199549/

3.Sklearn:

官方文档地址:https://scikit-learn.org/stable/
参考文档:https://www.cnblogs.com/wj-1314/p/10179741.html
在这里插入图片描述

5.Matplotlib

Matplotlib 是基于 NumPy 数组构建的多平台数据可视化库。它是John Hunter 在2002年构想的,原本的设计是给 IPython 打补丁,让命令行中也可以有交互式的 MATLAB 风格的画图工具。

在近些年,已经出现了更新更好的工具最终替代了 Matplotlib(比如 R 语言中的ggplot和ggvis), 但 Matplotlib 依旧是一个经过良好测试的、跨平台的图形引擎。
http://www.sohu.com/a/318173714_464033

二、代码详情
安装或导入必要的package
!pip install seaborn
!pip install xgboost
!pip install sklearn
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl

import matplotlib.pyplot as plt
from IPython.display import display
plt.style.use("fivethirtyeight")
sns.set_style({'font.sans-serif':['simhei','Arial']})
%matplotlib inline
#导入数据
housing = pd.read_csv('E:\\Anaconda\\work\\Paddlepaddle\\learning\\housingPrices_train.csv')
display(housing.head(n=5))#显示数据前5个

在这里插入图片描述

housing.info()#信息统计

在这里插入图片描述在这里插入图片描述

housing.describe()#信息描述

在这里插入图片描述

可视化处理
# 对区域分组对比每平米房价
housing_count = housing.groupby('LotArea')['SalePrice'].count().sort_values(ascending=False).to_frame().reset_index()


f, [ax2,ax3] = plt.subplots(2,1,figsize=(15,15))#几个子图,


sns.barplot(x='LotArea', y='SalePrice', palette="Greens_d", data=housing_count, ax=ax2)#条形图
ax2.set_title('数量',fontsize=15)
ax2.set_xlabel('区域')
ax2.set_ylabel('数量')

sns.boxplot(x='LotArea', y='SalePrice', data=housing, ax=ax3)
ax3.set_title('总价',fontsize=15)
ax3.set_xlabel('区域')
ax3.set_ylabel('房屋总价')

plt.show()

groupby:进行分组,并且进行组内运算
分组统计GroupBy技术详解:https://blog.csdn.net/Asher117/article/details/85614034
关于男女分组的具体应用:https://blog.csdn.net/shujuelin/article/details/79635848

在这里插入图片描述
在这里插入图片描述

f, [ax1,ax2] = plt.subplots(1, 2, figsize=(15, 5))#figsize为设定的尺寸
# 建房时间的分布情况
sns.distplot(housing['YearBuilt'], bins=20, ax=ax1, color='r')#displot()集合了matplotlib的hist()与核函数估计kdeplot的功能,增加了rugplot分布观测条显示与利用scipy库fit拟合参数分布的新颖用途。
sns.kdeplot(housing['YearBuilt'], shade=True, ax=ax1)#核密度估计图
# 建房时间和出售价格的关系
sns.regplot(x='YearBuilt', y='SalePrice', data=housing, ax=ax2)
plt.show()

subplots详解:https://blog.csdn.net/htuhxf/article/details/82986440
在这里插入图片描述
具体的几种图像在上方seaborn连接中。

#缺失值查找
misn = len(housing.loc[(housing['Fence'].isnull()), 'Fence'])
print('Fence缺失值数量为:'+ str(misn))

在这里插入图片描述
loc:通过行标签索引数据

iloc:通过行号索引行数据

ix:通过行标签或行号索引数据(基于loc和iloc的混合)

特征工程

在机器学习的具体实践任务中,选择一组具有代表性的特征用于构建模型是非常重要的问题。特征选择通常选择与类别相关性强、且特征彼此间相关性弱的特征子集,具体特征选择算法通过定义合适的子集评价函数来体现。在现实世界中,数据通常是复杂冗余,富有变化的,有必要从原始数据发现有用的特性。人工选取出来的特征依赖人力和专业知识,不利于推广。于是我们需要通过机器来学习和抽取特征,促进特征工程的工作更加快速、有效。特征选择的目标是寻找最优特征子集

对波士顿房价数据做特征工程

数据预处理要点: 1.使用log(x+1)来转换偏斜的数字特征 -,这将使我们的数据更加正常 2.为分类要素创建虚拟变量 3.将数字缺失值(NaN)替换为各自列的平均值

import pandas as pd
import numpy as np
from scipy.stats import skew
import xgboost as xgb
from sklearn.model_selection  import KFold
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import Ridge, RidgeCV, ElasticNet, LassoCV, Lasso
from math import sqrt
参数设置
TARGET = 'SalePrice'
NFOLDS = 5#K-Fold 交叉验证 (Cross-Validation)中的组数
SEED = 0
NROWS = None
SUBMISSION_FILE = 'E:\\Anaconda\\work\\Paddlepaddle\\learning\\sample_submission.csv'
  
## Load the data ##
train = pd.read_csv("E:\\Anaconda\\work\\Paddlepaddle\\learning\\housingPrices_train.csv")
test = pd.read_csv("E:\\Anaconda\\work\\Paddlepaddle\\learning\\housingPrices_test.csv")

ntrain = train.shape[0]#1460
ntest = test.shape[0]#1459
y_train = np.log(train[TARGET]+1)
train.drop([TARGET],axis = 1, inplace = True)#删除指定范围
all_data = pd.concat((train.loc[:,'MSSubClass':'SaleCondition'],
                       test.loc[:,'MSSubClass':'SaleCondition']))#数据合并与重塑

pd.concat详解:https://blog.csdn.net/mr_hhh/article/details/79488445

#log transform skewed numeric features
numer_feats = all_data.dtypes[all_data.dtypes != "object"].index

保留非"object"元素
在这里插入图片描述

skewed_feats1 = train[numer_feats].apply(lambda x: skew(x.dropna()))#运用偏度以及过滤缺失值
skewed_feats2 = skewed_feats1[skewed_feats1 > 0.75]#利用偏度缩小范围,设为0.75原因是因为skew 太高的情况下,特征值会有较为严重的 shake up,特征的变化对于 模型的影响很大。这里选的是>0.75,选的大的,可以发现偏得很严重。
skewed_feats3 = skewed_feats2.index#保留skewed_feats2的索引

dropna详解:https://blog.csdn.net/weixin_40283816/article/details/84304055

all_data[skewed_feats3] = np.log1p(all_data[skewed_feats3])#平滑化数据,使其符合正态分布
all_data = pd.get_dummies(all_data)#哑变量编码,类似于独热编码

dummies详解:https://www.jianshu.com/p/5f8782bf15b1

#filling NA's with the mean of the column:
all_data =all_data.fillna(all_data.mean())#将空缺的位置填充平均值
#creating matrices for sklearn:
x_train = np.array(all_data[:train.shape[0]])
x_test = np.array(all_data[train.shape[0]:])
kf = KFold(NFOLDS,shuffle=True,random_state=SEED)

关于kfold的一些其他解释及应用:
https://www.jianshu.com/p/284581d9b189

https://blog.csdn.net/GitzLiu/article/details/82670315

https://blog.csdn.net/accumulate_zhang/article/details/78490394

class SklearnWrapper(object):
    def __init__(self,clf,seed=0,params=None):
        params['random_state'] = seed
        self.clf = clf(**params)
        
    def train(self,x_train,y_train):
        self.clf.fit(x_train,y_train)#训练方法,可设置值。表示用数据X来训练某种模型。 函数返回值一般为调用fit方法的对象本身。fit(X,y=None)为无监督学习算法,fit(X,Y)为监督学习算法
        
    def predict(self,x):
        return self.clf.predict(x)
class XgbWrapper(object):
    def __init__(self,seed=0,params=None):
        self.param = params
        self.param['seed'] = seed
        self.nrounds = params.pop('nrounds',250)
        
    def train(self,x_train,y_train):
        dtrain = xgb.DMatrix(x_train,label = y_train)
        self.gbdt = xgb.train(self.param,dtrain,self.nrounds)
        
    def predict(self,x):
        return self.gbdt.predict(xgb.DMatrix(x))
#clf是选择的分类模型,x_train是所有训练集,y_train是所有训练集样本的类别标签,x_test是给定的所有测试集
def get_oof(clf):
    oof_train = np.zeros((ntrain,))#全0array
    oof_test = np.zeros((ntest,))#全0array
    oof_test_skf = np.empty((10,ntest))#一个用随机值填充的矩阵,用来存放10次交叉后的预测结果
    #10次交叉,10次循环
    #kf实际上是一个迭代器,是从样本中分成了10组训练集和测试集的索引号
    for i,(train_index, test_index) in enumerate(kf.split(x_train)):
        #train
        x_tr = x_train[train_index]#当前循环,当前实验的训练数据
        y_tr = y_train[train_index]#当前循环的训练数据标签
        #test
        x_te = x_train[test_index]#当前循环的测试数据
        
        clf.train(x_tr,y_tr)#用模型去拟合数据,也就是训练预测模型
        
        oof_train[test_index] = clf.predict(x_te)#把测试数据的预测标签按照对应索引,放到oof_train对应索引处
        oof_test_skf[i, :] = clf.predict(x_test)#用当前的模型,预测所有测试数据的标签,并放到oof_test_skf的一行中
        
    #10次实验做完,把10次得到的结果求平均
    oof_test[:] = oof_test_skf.mean(axis=0)
    return oof_train.reshape(-1,1),oof_test.reshape(-1,1)
#进行查看
for i,(train_index, test_index) in enumerate(kf.split(x_train)):
    print (i,train_index,test_index)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可发现已经分成了10组

et_params = {
    'n_jobs': 16,
    'n_estimators': 100,
    'max_features': 0.5,
    'max_depth': 12,
    'min_samples_leaf': 2,
}
 
rf_params = {
    'n_jobs': 16,
    'n_estimators': 100,
    'max_features': 0.2,
    'max_depth': 12,
    'min_samples_leaf': 2,
}
 
xgb_params = {
    'seed': 0,
    'colsample_bytree': 0.7,
    'silent': 1,
    'subsample': 0.7,
    'learning_rate': 0.075,
    'objective': 'reg:linear',
    'max_depth': 4,
    'num_parallel_tree': 1,
    'min_child_weight': 1,
    'eval_metric': 'rmse',
    'nrounds': 500
}
 

rd_params={
    'alpha': 10
}
 
ls_params={
    'alpha': 0.005
}

各种模型的参数设置

xg = XgbWrapper(seed = SEED,params=xgb_params)
et = SklearnWrapper(clf = ExtraTreesRegressor,seed = SEED, params = et_params)#极端随机森林
rf = SklearnWrapper(clf = RandomForestRegressor, seed = SEED, params = rf_params)#随机森林
rd = SklearnWrapper(clf = Ridge, seed = SEED, params = rd_params)#岭回归
ls = SklearnWrapper(clf = Lasso, seed = SEED, params = ls_params)#LASSO回归
xg_oof_train, xg_oof_test = get_oof(xg)
et_oof_train, et_oof_test = get_oof(et)
rf_oof_train, rf_oof_test = get_oof(rf)
rd_oof_train, rd_oof_test = get_oof(rd)
ls_oof_train, ls_oof_test = get_oof(ls)
print("XG-CV: {}".format(sqrt(mean_squared_error(y_train, xg_oof_train))))
print("ET-CV: {}".format(sqrt(mean_squared_error(y_train, et_oof_train))))
print("RF-CV: {}".format(sqrt(mean_squared_error(y_train, rf_oof_train))))
print("RD-CV: {}".format(sqrt(mean_squared_error(y_train, rd_oof_train))))
print("LS-CV: {}".format(sqrt(mean_squared_error(y_train, ls_oof_train))))

在这里插入图片描述

x_train = np.concatenate((xg_oof_train, et_oof_train, rf_oof_train, rd_oof_train, ls_oof_train), axis=1)
x_test = np.concatenate((xg_oof_test, et_oof_test, rf_oof_test, rd_oof_test, ls_oof_test), axis=1)
print("{},{}".format(x_train.shape, x_test.shape))

在这里插入图片描述

dtrain = xgb.DMatrix(x_train, label=y_train)
dtest = xgb.DMatrix(x_test)
xgb_params = {
    'seed': 0,
    'colsample_bytree': 0.8,
    'silent': 1,
    'subsample': 0.6,
    'learning_rate': 0.01,
    'objective': 'reg:linear',
    'max_depth': 1,
    'num_parallel_tree': 1,
    'min_child_weight': 1,
    'eval_metric': 'rmse',
}
res = xgb.cv(xgb_params, dtrain, num_boost_round=1000, nfold=4, seed=SEED, stratified=False,
             early_stopping_rounds=25, verbose_eval=10, show_stdv=True)

在这里插入图片描述
在这里插入图片描述

best_nrounds = res.shape[0] - 1
cv_mean = res.iloc[-1, 0]
cv_std = res.iloc[-1, 1]
print('Ensemble-CV: {0}+{1}'.format(cv_mean, cv_std))

在这里插入图片描述

gbdt = xgb.train(xgb_params, dtrain, best_nrounds)
!cat /dev/null > sample_submission.csv#创建相应文件
submission = pd.read_csv(SUBMISSION_FILE,engine = 'python',encoding = 'utf-8')
submission.iloc[:,0] = gbdt.predict(dtest)
saleprice = np.exp(submission['SalePrice'])-1
submission['SalePrice'] = saleprice
submission.to_csv('xgstacker_starter.sub.csv', index=None)

写入结果

三、遇见的问题
1、TypeError: ‘KFold’ object is not iterable:

主要是参数NFOLDS的设置,必须一一对应,另外在进行迭代的时候,如下:

for i, (train_index, test_index) in enumerate(kf):
        x_tr = x_train[train_index]
        y_tr = y_train[train_index]
        x_te = x_train[test_index]

如是使用enumerate(kf),则是可能出现问题的,所以在查阅之后,我改成了以下代码:

for i,(train_index, test_index) in enumerate(kf.split(x_train)):
        #train
        x_tr = x_train[train_index]#当前循环,当前实验的训练数据
        y_tr = y_train[train_index]#当前循环的训练数据标签
        #test
        x_te = x_train[test_index]#当前循环的测试数据

问题解决

2. No columns to parse from file

解决方法:在本地用Excel创建一个csv文件,注意要用UTF-8格式保存。另外,文件开头需要写入”SalePrice",在后面会用到。
在这里插入图片描述
问题解决

应用的数据集,等下会一起发布,有问题可以私戳。

2018-05-28 17:20:54 weixin_41852491 阅读数 950

Python是目前学习数据分析课程中,非常重要的一块,也是目前非常受行业欢迎的。因此,学习非常重要,下面是Python学习的一些重要步骤和知识!

    步骤1:熟悉Python

    对数据科学,PythonR都是不错的编程语言选择。R在学术界往往更受欢迎,而Python更受行业欢迎,两种语言都有丰富的包支持数据科学工作流。我用两种语言教过数据科学,通常更喜欢Python

    作为初学者,你不需要同时学习PythonR。相反,你应该集中精力学习一种语言及其用于数据科学的包体系。如果你选择了Python(个人建议Python),建议安装Anaconda,它简化了WindowsOSXLinux上各种包的安装和管理。

    步骤2:学习用pandas库进行数据分析、数据处理和可视化

    如果你要用Python处理数据,你应该学习如何使用pandas库。

    pandas提供了一个高性能的数据结构(叫做 "DataFrame"),适用于有不同类型列的表格数据,类似于Excel表格或SQL表。它包含读写数据、处理缺失数据、过滤数据、清理混乱数据、合并数据集、可视化数据等工具。简而言之,学习pandas将大大提高你处理数据的工作效率。

    然而,pandas包含了大量的函数,(可以说)提供了太多的方式来完成相同的任务。这使得学习pandas、寻找pandas的最佳实践具有挑战性。

    步骤3:用scikit-learn进行机器学习

    如果你希望用Python进行机器学习,应该学习使用scikit-learn库。

    构建"机器学习模型"来预测未来或者自动从数据中提取信息,是数据科学最性感的部分。scikit-learnPython中最受欢迎的机器学习库,有以下优点:

    "它对大量不同模型提供了一个干净且一致的接口。

    "它为每一个模式提供了许多调节参数,但同时设置了合理的默认值。

    步骤4:深度理解机器学习

    机器学习是一个很复杂的领域。虽然scikit-learn提供了机器学习的有效工具,但它无法直接回答许多重要问题:

    "怎么知道哪个机器学习模型最适合我的数据集?

    "如何解释模型的结果?

    "如何评价我的模型对未来数据的概括?

    "如何给模型选择特征?

    "等等。

    "以上只是简单的用文字说明了一下数据分析当中Python的学习,下面这张图更能直观反映学习内容


以上片摘自科多大数据的程,想自学的小伙伴看起来会比有思路

当然需要特指出,数据分析程学内容肯定不止python这一项内容,还包括数据分析基础,互联网电子商务、经济学基础,数据产品(可视化报表)等各个板块的学习


Python数据分析入门

阅读数 12561

Python数据分析

阅读数 39

没有更多推荐了,返回首页