Python机器学习三大件之二pandas

一、Pandas

2008年WesMcKinney开发出的库

专门用于数据挖掘的开源python库

以Numpy为基础,借力Numpy模块在计算方面性能高的优势

基于matplotlib,能够简便的画图

独特的数据结构

二、数据结构

  • Pandas中一共有三种数据结构,分别为:Series、DataFrame和MultiIndex。

三、Series

Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。

  • Series的创建
import pandas as pd
pd.Series(np.arange(3))

0 0
1 1
2 2
dtype: int64

#指定索引
pd.Series([6.7,5.6,3,10,2], index=[1,2,3,4,5])

1 6.7
2 5.6
3 3.0
4 10.0
5 2.0
dtype: float64

#通过字典数据创建
color_count = pd.Series({'red':100, 'blue':200, 'green': 500, 'yellow':1000})
color_count

blue 200
green 500
red 100
yellow 1000
dtype: int64

  • Series的属性
color_count.index
color_count.values

也可以使用索引来获取数据:

color_count[2]

100

  • Series排序

data[‘p_change'].sort_values(ascending=True) # 对值进行排序
data[‘p_change'].sort_index() # 对索引进行排序
#series排序时,只有一列,不需要参数

四、DataFrame

创建

pd.DataFrame(np.random.randn(2,3))

score = np.random.randint(40, 100, (10, 5))
score

array([[92, 55, 78, 50, 50],
[71, 76, 50, 48, 96],
[45, 84, 78, 51, 68],
[81, 91, 56, 54, 76],
[86, 66, 77, 67, 95],
[46, 86, 56, 61, 99],
[46, 95, 44, 46, 56],
[80, 50, 45, 65, 57],
[41, 93, 90, 41, 97],
[65, 83, 57, 57, 40]])

但是这样的数据形式很难看到存储的是什么的样的数据,可读性比较差!!

# 使用Pandas中的数据结构
score_df = pd.DataFrame(score)

  • DataFrame的属性

data.shape
data.index
data.columns
data.values
data.T
data.head(5)
data.tail(5)
data.reset_index(keys, drop=True)
keys : 列索引名成或者列索引名称的列表
drop : boolean, default True.当做新的索引,删除原来的列

  • dataframe基本数据操作

data[‘open'][‘2018-02-27'] # 直接使用行列索引名字的方式(先列后行)
data.loc[‘2018-02-27':‘2018-02-22', ‘open'] # 使用loc:只能指定行列索引的名字
data.iloc[:3, :5 ]# 使用iloc可以通过索引的下标去获取
data.sort_values(by=“open”, ascending=True) #单个排序
data.sort_values(by=[‘open', ‘high']) # 按照多个键进行排序
data.sort_index() # 对索引进行排序

DataFrame运算

应用add等实现数据间的加、减法运算
应用逻辑运算符号实现数据的逻辑筛选
应用isin, query实现数据的筛选
使用describe完成综合统计
使用max, min, mean, std完成统计计算
使用idxmin、idxmax完成最大值最小值的索引
使用cumsum等实现累计分析
应用apply函数实现数据的自定义处理

五、pandas.DataFrame.plot

DataFrame.plot(kind=‘line')
kind : str,需要绘制图形的种类
‘line' : line plot (default)
‘bar' : vertical bar plot
‘barh' : horizontal bar plot
关于“barh”的解释:
http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.barh.html
‘hist' : histogram
‘pie' : pie plot
‘scatter' : scatter plot

六、缺失值处理

isnull、notnull判断是否存在缺失值
np.any(pd.isnull(movie)) # 里面如果有一个缺失值,就返回True
np.all(pd.notnull(movie)) # 里面如果有一个缺失值,就返回False
dropna删除np.nan标记的缺失值
movie.dropna()
fillna填充缺失值
movie[i].fillna(value=movie[i].mean(), inplace=True)
replace替换
wis.replace(to_replace="?", value=np.NaN)

七、数据离散化

p_change= data['p_change']
# 自行分组,每组个数差不多
qcut = pd.qcut(p_change, 10)
# 计算分到每个组数据个数
qcut.value_counts()
# 自己指定分组区间
bins = [-100, -7, -5, -3, 0, 3, 5, 7, 100]
p_counts = pd.cut(p_change, bins)

得出one-hot编码矩阵

dummies = pd.get_dummies(p_counts, prefix="rise")
#prefix:分组名字前缀

八、数据合并

pd.concat([data1, data2], axis=1)
按照行或列进行合并,axis=0为列索引,axis=1为行索引

pd.merge(left, right, how=‘inner', on=None)

可以指定按照两组数据的共同键值对合并或者左右各自
left: DataFrame
right: 另一个DataFrame
on: 指定的共同键
how:按照什么方式连接

九、交叉表与透视表

交叉表:计算一列数据对于另外一列数据的分组个数 透视表:指定某一列对另一列的关系

#通过交叉表找寻两列数据的关系
count = pd.crosstab(data['week'], data['posi_neg'])
#通过透视表,将整个过程变成更简单一些
data.pivot_table(['posi_neg'], index='week')

十、数据聚合

count = starbucks.groupby(['Country']).count()
col.groupby(['color'])['price1'].mean()
#抛开聚合谈分组,无意义

到此这篇关于Python机器学习三大件之二pandas的文章就介绍到这了,更多相关Python pandas内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python pandas模糊匹配 读取Excel后 获取指定指标的操作

    1.首先读取Excel文件 数据代表了各个城市店铺的装修和配置费用,要统计出装修和配置项的总费用并进行加和计算: 2.pandas实现过程 import pandas as pd #1.读取数据 df = pd.read_excel(r'./data/pfee.xlsx') print(df) cols = list(df.columns) print(cols) #2.获取含有装修 和 配置 字段的数据 zx_lists=[] pz_lists=[] for name in cols: if

  • python读写数据读写csv文件(pandas用法)

    python中数据处理是比较方便的,经常用的就是读写文件,提取数据等,本博客主要介绍其中的一些用法.Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能. 一.pandas读取csv文件 数据处理过程中csv文件用的比较多. import pandas as pd data = pd.read_csv('F:/Zhu/test/test.csv') 下面看一下pd.read_csv常用的参数: panda

  • Python pandas轴旋转stack和unstack的使用说明

    摘要 前面给大家分享了pandas做数据合并的两篇[pandas.merge]和[pandas.cancat]的用法.今天这篇主要讲的是pandas的DataFrame的轴旋转操作,stack和unstack的用法. 首先,要知道以下五点: 1.stack:将数据的列"旋转"为行 2.unstack:将数据的行"旋转"为列 3.stack和unstack默认操作为最内层 4.stack和unstack默认旋转轴的级别将会成果结果中的最低级别(最内层) 5.stack

  • python绘图pyecharts+pandas的使用详解

    pyecharts介绍 pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 Echarts 生成的图可视化效果非常棒 为避免绘制缺漏,建议全部安装 为了避免下载缓慢,作者全部使用镜像源下载过了 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-countries-pypkg pip install -i https://pypi.tuna.tsin

  • python之 matplotlib和pandas绘图教程

    不得不说使用python库matplotlib绘图确实比较丑,但使用起来还算是比较方便,做自己的小小研究可以使用.这里记录一些统计作图方法,包括pandas作图和plt作图. 前提是先导入第三方库吧 import pandas as pd import matplotlib.pyplot as plt import numpy as np 然后以下这两句用于正常显示中文标签什么的. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

  • Python基础之pandas数据合并

    一.concat concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合 pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False) axis: 需要合并链接的轴,0是行,1是列join:连接的方式 inner,或者outer 二.相同字段的表首尾相接 #现将表构成l

  • python pandas合并Sheet,处理列乱序和出现Unnamed列的解决

    使用python中的pandas,xlrd,openpyxl库完成合并excel中指定sheet的操作 # -*- coding: UTF-8 -*- import xlrd import pandas as pd from pandas import DataFrame from openpyxl import load_workbook #表格位置 excel_name = '1.xlsx' # 获取workbook中所有的表格 wb = xlrd.open_workbook(excel_n

  • python 使用pandas同时对多列进行赋值

    如dataframe data1['月份']=int(month) #加入月份和企业名称 data1['企业']=parmentname 可以增加单列,并赋值,如果想同时对多列进行赋值 data1['月份','企业']=int(month) , parmentname #加入月份和企业名称 会出错 ValueError: Length of values does not match length of index data[['合计','平均']]='数据','月份' 类似这样的,也无效 Ke

  • Python数据分析之pandas函数详解

    一.apply和applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df = pd.DataFrame(np.random.randn(5,4) - 1) print(df) print(np.abs(df)) 运行结果: 0         1         2         3 0 -0.062413  0.844813 -1.853721 -1.980717 1 -0.539628 -1.975173 -0.856597 -2.612406

  • Python Pandas知识点之缺失值处理详解

    前言 数据处理过程中,经常会遇到数据有缺失值的情况,本文介绍如何用Pandas处理数据中的缺失值. 一.什么是缺失值 对数据而言,缺失值分为两种,一种是Pandas中的空值,另一种是自定义的缺失值. 1. Pandas中的空值有三个:np.nan (Not a Number) . None 和 pd.NaT(时间格式的空值,注意大小写不能错),这三个值可以用Pandas中的函数isnull(),notnull(),isna()进行判断. isnull()和notnull()的结果互为取反,isn

  • Python3 pandas.concat的用法说明

    前面给大家分享了pandas.merge用法详解,这节分享pandas数据合并处理的姊妹篇,pandas.concat用法详解,参考利用Python进行数据分析与pandas官网进行整理. pandas.merge参数列表如下图,其中只有objs是必须得参数,另外常用参数包括objs.axis.join.keys.ignore_index. 1.pd.concat([df1,df2,df3]), 默认axis=0,在0轴上合并. 2.pd.concat([df1,df4],axis=1)–在1轴

  • python-pandas创建Series数据类型的操作

    1.什么是pandas 2.查看pandas版本信息 print(pd.__version__) 输出: 0.24.1 3.常见数据类型 常见的数据类型: - 一维: Series - 二维: DataFrame - 三维: Panel - - 四维: Panel4D - - N维: PanelND - 4.pandas创建Series数据类型对象 1). 通过列表创建Series对象 array = ["粉条", "粉丝", "粉带"] # 如

  • python基于Pandas读写MySQL数据库

    要实现 pandas 对 mysql 的读写需要三个库 pandas sqlalchemy pymysql 可能有的同学会问,单独用 pymysql 或 sqlalchemy 来读写数据库不香么,为什么要同时用三个库?主要是使用场景不同,个人觉得就大数据处理而言,用 pandas 读写数据库更加便捷. 1.read_sql_query 读取 mysql read_sql_query 或 read_sql 方法传入参数均为 sql 语句,读取数据库后,返回内容是 dateframe 对象.普及一下

  • Python Pandas list列表数据列拆分成多行的方法实现

    1.实现的效果 示例代码: df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]}) df Out[458]: A B 0 1 [1, 2] 1 2 [1, 2] 拆分成多行的效果: A  B 0  1  1 1  1  2 3  2  1 4  2  2 2.拆分成多行的方法 1)通过apply和pd.Series实现 容易理解,但在性能方面不推荐. df.set_index('A').B.apply(pd.Series).stack().reset_ind

  • 聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明

    loc和iloc的意思 首先,loc是location的意思,和iloc中i的意思是指integer,所以它只接受整数作为参数,详情见下面. loc和iloc的区别及用法展示 1.区别 loc works on labels in the index. iloc works on the positions in the index (so it only takes integers). 2.用法展示 首先创建一个dataframe: 1)loc为Selection by Label函数,即为

  • Python基础之教你怎么在M1系统上使用pandas

    一.问题 目前为止,M1系统上还不能使用pip3安装pandas库,无法使用pandas进行数据分析和处理.虽然网上也有专门适配M1的python环境,但实施起来也比较麻烦,不够纯粹. 那在M1上,如何使用pandas? 二.方案 docker新版本已经支持M1了,我们不妨尝试一下,是否可以用vscode+docker使用pandas. 1.安装M1版本的docker 访问https://docs.docker.com/docker-for-mac/install/,下载M1版本的docker.

随机推荐