基于python的大数据分析基本知识

1. 数据科学领域中常用的python库

Numpy库:数据运算的基础库,运行效率高(底层C语言,高效index)

Scipy库:实现了常用的科学计算方法(线性代数,傅里叶变换,信号和图像处理)

Pandas库:分析数据的利器,高级数据结构(Series,DataFrame)

Matplotlib库:绘图功能(散点,曲线,柱形)

2. Anaconda的使用说明

介绍:著名的python数据科学平台,开源,跨平台。包含有流行的python和R的包。

下载地址:https://www.anaconda.com/download/

Jupyter notebook基本使用:

新建一个文件:new
执行代码:Shift + Enter
模式切换:code 和 markdown
查看函数帮助信息: shift + tab
以%开头的为魔法函数:%matplotlib inline

Jupyter notebook基本使用

3. Numpy库介绍

3.1 预备知识

数组与矩阵:数组可以是N维的,而矩阵是二维的数组。

向量:1 * N 或 N * 1 的矩阵

标量:1 * 1 的矩阵

3.2 定义数组

import numpy as np
list_1 = [1,2,3,4,5]
array_1 = np.array(list_1)
print(array_1)

定义一维数组

import numpy as np
list_1 = [1, 2, 3, 4]
list_2 = [5, 6, 7, 8]
array_2 = np.array([list_1, list_2])
print(array_2)

定义二维数组

# arange函数类似于python的range函数
import numpy as np
array_3 = np.arange(1, 10, 2)
print(array_3)

通过arange函数定义数组

import numpy as np
array_4_1 = np.zeros(5)       # 定义一维全零数组
print(array_4_1)
array_4_2 = np.zeros([2,3])   # 定义二维全零数组,两行三列
print(array_4_2)

定义全零数组

import numpy as np
array_5 = np.eye(5)       # 定义单位数组: 5*5
print(array_5)

定义单位数组

import numpy as np
array_6 = np.random.randn(10)
print(array_6)

通过randn定义数组

import numpy as np
array_7_1 = np.random.randint(10, size=10)      # 一维数组: 每个元素都是0-9中的一个数,size表示1行10列
print(array_7_1)
array_7_2 = np.random.randint(10, size=(2,3))   # 二维数组: 每个元素都是0-9中的一个数,size表示2行3列
print(array_7_2)
array_7_3 = np.random.randint(10, size=20).reshape(4,5)      # 二维数组,每个元素都是0-9中的一个数,size表示1行20列,通过reshape函数进行再次切分
print(array_7_3)

通过randint定义数组

3.3 操作数组

import numpy as np
array_1 = np.random.randint(10, size=20).reshape(4,5)

# 数组的属性
print(array_1.shape)     # 数组行列信息:(4, 5)
print(array_1.size)      # 数组总数量:20
print(array_1.dtype)     # 元素数据类型, 如果存在多种类型,则取精度最高的那个

# 数组的访问--操作与切片类似
print(array_1)
print(array_1[0][1])     # 行选0,列选1
print(array_1[0,1])      # 行选0,列选1
print(array_1[:2,1:3])   # 行选0和1,列选1和2

# 数组的常用函数
print(np.unique(array_1))
print(np.sum(array_1))           # 返回所有数组元素的和
print(np.sum(array_1[0]))        # 返回某一行的和
print(np.sum(array_1[:,0]))      # 返回某一列的和
print(array_1.max())             # 返回元素中的最大值
print(array_1[0].max())          # 返回某一行中的最大值
print(array_1[:,0].min())        # 返回某一列中的最小值

数组操作

3.4 矩阵相关

import numpy as np
m = np.mat([[1,2,3, 4],[5,6,7,8]])
print(m)

通过列表定义矩阵

import numpy as np
a = np.random.randint(10, size=20).reshape(4,5)   # 定义一个二维数组
m = np.mat(a)
print(m)

通过二维数组定义矩阵

import numpy as np
A = np.mat(np.random.randint(10, size=20).reshape(4,5))
B = np.mat(np.random.randint(10, size=20).reshape(5,4))
print(A * B)     # 注意:A*B 其中[A矩阵的行]和[B矩阵的列]需要一样,否则会报错

矩阵的乘积运算

4. Pandas库介绍

pandas库主要功能是进行数据的分析和处理,它有两个重要的数据结构:Series 和 DataFrame

4.1 关于数据处理过程中的NaN数据

1. np.nan 其数据类型为float
2. 特点:任何数据跟NaN进行运算,都是NaN
3. 删除带有NaN的行或列
    s.dropna()
    df.dropna(axis=1),其中how参数:any(有nan就删)还是all(全是nan才删),thresh参数:可以设置nan的阈值
4. 其他与nan有关的函数
    s.isnull(),s.notnull(),df.isnull(),df.notnull()
    df.fillna(value=1)   # nan值全部填充为1
    df.fillna(value=(0:0,1:1))  # 0列nan填充0,1列nan填充1

关于NaN的一些知识点

4.2 数据结构Series

Series 类似于 Numpy 中的 array

4.2.1 定义Series

import numpy as np
import pandas as pd

# 通过list
s1 = pd.Series([1,2,3,4,5], index=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
print(s1)

# 通过array
s2 = pd.Series(np.arange(10))
print(s2)

# 通过dict, 其中dict的key为index
s3 = pd.Series({"a":1,"b":2,"c":3,})
print(s3)

创建Series:3种方式

s.index
s.name
s.index.name
s.values

Series一些常见属性

4.2.2 Series基本操作

import pandas as pd

s2 = pd.Series([1,2,3,4,5], index=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])

print(s2["b"])         # 访问元素:根据索引
print(s2[s2<3])      # 访问元素:给定值范围

print(s2.to_dict())   # 将 Series 转为 dict

index_new = ["A","B","C","D","E","F"]
s3 = pd.Series(s2, index=index_new)    # 改变Series的索引

s2.drop(‘a‘)            # 删除一个元素

# Series的排序
s2.sort_index()      #  Series依据index排序
s2.sort_values()    #  Series依据values排序

Series基本操作

4.3 数据结构DataFrame

4.3.1 DataFrame基本知识

DataFrame对象中的某一列,返回的是一个Series对象

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

# 方式1:csv --> DataFrame
df1 = pd.read_csv("filePath_csv")

# 方式2:Series --> DataFrame
df2 = DataFrame([s1, s2], index=["a","b"])

# 方式3:dict --> DataFrame
df3 = DataFrame({})

创建DataFrame

df.shape                    # 查看df的行数和列数
df.columns                 # 查看df的列名
df.head()                   # 查看df的某几行数据
df[[‘列名1‘,‘列名2‘]]     # 查看df的某些列数据, 也可以用 df.列名 的方法
df.T                          # 对df进行转置

DataFrame的基本操作

### 过滤功能
# 对原有的DataFrame过滤掉某些列,得到一个新的DataFrame  相当于删除某些列
df_new = DataFrame(df, columns=[‘第一列‘, ‘第三列‘])    # 如果columns中填写的列在df中不存在,那么该列的value均为NaN
# 表示行取10-19,列取0-1
df.iloc[10:20,0:2]
# 表示行取10-11,列取从第一个到列名为[列名1]的列
df.loc[10:11,:‘列名1‘]

### 修改value
# 给column中一整列全部value重新赋值
df_new[‘第N列‘] = list | numpy | pandas
# 给column中某一个或几个元素赋值
df_new[‘第十八列‘] = pd.Series([100, 200], index=[1, 2])

### 删除操作
# 删除指定一行
df.drop(‘A‘,axis=0)
# 删除指定一列
df.drop(‘c1‘,axis=1)

### 添加操作
# 方式1:直接新增一列
df["GDP"] = Series([111,222,333])  # 注意此方式有缺点,如果df的index不是默认值,新增时也需要指定
# 方式2:直接新增一列
df["GDP"] = df["城市"].map(gdp_map_dict)   # 使用map的优点,不需要关注index的情况

DataFrame的数据处理

4.3.2 DataFrame相关高级操作

4.3.2.1 运用到DataFrame中的高级函数

# apply可以对一列或一行数据进行处理
# apply可以传入一个函数,这个函数对某一行或某一列进行操作
# apply也可以实现将一列分成多列

apply函数

# 通过去重进行数据清洗
df.drop_duplicates([‘Seqno‘], keep=‘last‘)
思路:先看某一列不重复的数据有多少:len(df[‘‘].unique()),再通过duplicated判断元素是否重复

drop_duplicates函数

# 已知一个[按天采样]的Series,求其[按月采样]或[按时采样]
t_range = pd.date_range(‘2016-01-01‘, ‘2016-12-31‘)
s_day = Series(np.random.randn(len(t_range)), index=t_range)
# 按月采样
s_month = s_day.resample(‘M‘).mean()
# 按时采样
s_hour = s_day.resample(‘H‘).ffill()

resample函数

# 数据分箱技术binning
score_list = np.random.randint(25, 100, size=20)
bins = [0, 59, 70, 80, 100]      # 定义区间范围点
score_cat = pd.cut(score_list, bins)  # 对score_list做分箱操作
pd.value_counts(score_cat)   # 做统计呈现    

df = DataFrame()
df[‘score‘] = score_list
df[‘student‘] = [pd.util.testing.rands(3) for i in range(20)]

# 给df添加区间
df[‘categories‘] = pd.cut(df[‘score‘], bins, labels=[‘r1‘,‘r2‘,‘r3‘,‘r4‘])
# 注意labels的数量应该等于bins的数量减1
print(df)

cut函数

# 数据聚合技术Aggregation
基本使用:df.agg("func_name")
其中func_name可以是内置的函数,也可以是自定义函数
内置的如:
    mean,min,max,describe
自定义的如:
    def func1(attr): return attr.max() - attr.min()
    df.agg("func1")    

agg函数

df = DataFrame([[1,2,3],[1,3,9],[7,3,9]], columns=["A","B","C"])
dfgb_one = df.groupby(df[‘A‘])
# 按A列分组,求其他列的平均值
dfgb_one.mean()
# 按A列分组,求B列的平均值
dfgb_one[‘B‘].mean()

groupby

4.3.2.2 DataFrame的排序

df = DataFrame(np.arange(40).reshape(8,5))

# 以A列进行排序,降序方式
df.sort_values(‘A‘,ascending=False)

# 以index进行排序
df.sort_index()

DataFrame的排序

4.3.2.3 重命名DataFrame的index

df.index = df.index.map(str.lower)                       # map函数可以自己定义,也可以使用python的内置函数
df.rename(index=str.lower, columns=str.lower)
df.rename(index={‘A‘:‘a‘}, columns={‘BJ‘:‘bj‘})    # 传入字典,字典中内容为修改的内容

重命名DataFrame的index

4.3.2.4 DataFrame的merge操作

合并两个df:pd.merge
合并规则:找列名相同,value值相同
    on参数默认为None,用来指定用哪一列进行merge
    how参数默认为inner,用来指定merge策略。可选取值:left, right, inner,outer

DataFrame的merge操作

4.3.2.4 DataFrame的多级index

1. 创建1个二级index的Series
2. 如何访问具有二级index的Series
3. 多级index的Series与DataFrame的相互转换
4. 创建1个具有多级index和多级columns的DataFrame

DataFrame的多级index

5. Pandas库中Series和DataFrame的关系

1. DataFrame 的每一列为一个 Series

DataFrame的每一行为一个 tuple。df.iterrows() 返回一个generator,遍历generator,每个元素为一个tuple,每个tuple有两个元素:index, Series。

2. Series是一维数据结构。index 创建series时可以指定,values array类型。

DataFrame是二维数据结构。包含有index,columns,values。

3. Series转为字典:{k1:v1,k2:v2}

DataFrame转为字典:{k1:{k11:v11,k12:v12}}

6. 使用pandas过程中的问题记录

1. 当用read_csv读取文件时,若某一列原本有整数和NaN数据,那么读取内容后此列中所有的整数都会变为浮点数。因为NaN数据属于浮点数。

2. 查看某一列中有多少个NaN的方法:.isnull().sum()

3. 统计某列或者某行数据元素的个数.value_counts()

4. 去除df中所有包含NaN的行:df.dropna()

5. 按条件删除某些行:df.drop(df[(df.score < 50) & (df.score > 20)].index)

其中可以使用操作符: | 只需其中一个成立,& 同时成立,~ 表示取反

6. 对列中每个元素做统一操作:df[‘column_name‘].map(len)。其中len也可以是自定义函数

7. 针对某一列取值的唯一性,定义一些必要的映射关系:dict{ zip(df.column_name.unique(), {"a1", "a2", "a3"}) }

原文地址:https://www.cnblogs.com/reconova-56/p/12298356.html

时间: 2024-10-07 06:55:06

基于python的大数据分析基本知识的相关文章

Python金融大数据分析

Python金融大数据分析(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1CF2NhbgpMroLhW2sTm7IJQ 提取码:clmt 复制这段内容后打开百度网盘手机App,操作更方便哦 内容简介  · · · · · · 唯一一本详细讲解使用Python分析处理金融大数据的专业图书:金融应用开发领域从业人员必读. Python凭借其简单.易读.可扩展性以及拥有巨大而活跃的科学计算社区,在需要分析.处理大量数据的金融行业得到了广泛而迅速的应用,并且成为该行业

基于Hadoop离线大数据分析平台项目实战

基于Hadoop离线大数据分析平台项目实战  课程学习入口:http://www.xuetuwuyou.com/course/184 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介: 某购物电商网站数据分析平台,分为收集数据.数据分析和数据展示三大层面.其中数据分析主要依据大数据Hadoop生态系统常用组件进行处理,此项目真实的展现了大数据在企业中实际应用. 课程内容 (1)文件收集框架 Flume ①Flume 设计架构.原理(三大组件) ②Flume 初步使

《Python金融大数据分析》中文版PDF+英文版PDF+源代码

下载:https://pan.baidu.com/s/1ymQo0qlb79G9kgQEbTo9Fg <Python金融大数据分析>中文版PDF+高清英文版PDF+源代码 中英文两版可以对比学习. 配套源代码: 经典书籍,讲解详细: 中文版如图 原文地址:http://blog.51cto.com/3215120/2307576

【转帖】Python在大数据分析及机器学习中的兵器谱

Flask:Python系的轻量级Web框架. 1. 网页爬虫工具集 Scrapy 推荐大牛pluskid早年的一篇文章:<Scrapy 轻松定制网络爬虫> Beautiful Soup 客观的说,Beautifu Soup不完全是一套爬虫工具,需要配合urllib使用,而是一套HTML/XML数据分析,清洗和获取工具. Python-Goose Goose最早是用Java写得,后来用Scala重写,是一个Scala项目.Python-Goose用Python重写,依赖了Beautiful S

Python Spark大数据分析实战教程下载|pyspark教程

分享网盘下载地址--https://pan.baidu.com/s/1c1OjpSW 密码: a5ks Python是数据分析最常用的语言之一,而Apache Spark是一个开源的强大的分布式查询和处理引擎. 本课程以案例驱动的方式讲解如何基于Python语言进行Spark Application编程,完成数据获取.处理.数据分析及可视化方面常用的数据分析方法与技巧,通过这些实际案例让学员轻松掌握使用PySpark分析来自不同领域的数据.

利用Python进行大数据分析(完整中文版689页)

<Python for data  analysis>一书的中文版,完整版 http://pan.baidu.com/s/1c0tqJW8 python for data analysis的中文版,全书 欢迎下载

《Python金融大数据分析》PDF版

链接:https://pan.baidu.com/s/1pWCG_GcN9S0VEnOc-2txTg 原文地址:http://blog.51cto.com/13929572/2174559

Druid 大数据分析之快速应用(单机模式)

1.概述 本节快速安装基于单机服务器,很多配置可以默认不需要修改,数据存储在操作系统级别的磁盘.推出快速安装的目的,便于了解并指导基于Druid进行大数据分析的开发流程.本节主要讲Druid的安装.实例数据加载.查询及使用问题解决. 2.安装要求 1. Java 7 及以上   2. Linux, Mac OS X, or other Unix-like OS (Windows不支持)   3. VMware   4. 2CPU ++; 内存2G ++ 3.Zookeeper 安装 本次采单机版

基于Python Spark的大数据分析_pyspark实战项目课程

基于Python Spark的大数据分析(第一期) 课程介绍地址:http://www.xuetuwuyou.com/course/173 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:轩宇老师 1.开课时间:小班化教学授课,第一期开课时间为5月20号(满30人开班,先报先学!): 2.学习方式:在线直播,共8次课,每次2小时,每周2次(周三.六,晚上20:30 - 22:30),提供在线视频,课后反复学习: 3.报名课程后,请联系客服申请加入班级答疑交流QQ群: