概述

此博客将会持续更新,会将numpy、pandas、matplotlib等库进行函数解释,以及示例演示.这博客更像是一个笔记,让你在某些函数记不住的时候来查一下,而不是一本书一样,给你详细的讲解附上官方文档地址
数据
 所使用的数据集将从下列作为目标使用,可以用这些数据自己实验

数据1.1

[['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', '是'],['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', '是'],['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '是'],['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', '是'],['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', '是'],['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', '否'],['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', '否'],['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', '否'],['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', '否'],['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', '否'],['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', '否'],['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', '否'],['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', '否'],['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', '否']
]
labels=['色泽', '根蒂', '敲声', '纹理', '脐部', '触感', '结果']

pandas

数据总览

pd.DataFrame.describe()
pd.DataFrame.info()

dtypes:

返回一个Series类型的数据,显示不同列对应的相应类型

示例

      col_name col_type
0           Id    int64
1   MSSubClass    int64
2     MSZoning   object
3  LotFrontage  float64
4      LotArea    int64
#以上为例子
#将object类型的列分离出来
obj_li = []
num_li = []for i in range(df.shape[0]):if df.loc[i]['col_type'] == 'object':obj_li.append(df.lov[i]['col_name'])else:obj_li.append(df.lov[i]['col_name'])

类型转变

将某列的类型进行转变

to_numeric

pandas.to_numeric(arg, errors='raise', downcast=None)

将参数转变为numeric类型
>>>s = pd.Series(['1.0', '2', -3])
>>>pd.to_numeric(s)
0    1.0
1    2.0
2   -3.0
astype

DataFrame.astype(dtype, copy=True, errors='raise')

删除

Dataframe.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

参数

  • labels:指定删除行列的名字
  • axis:默认为0,指删除行,1为删除列
  • index:指定删除行
  • columns:指定删除列
  • inplace:是否将变量修改,默认并不会修改原变量值

举例

  1. 删除某行,默认是删除行
>df.drop(labels=行名)
>df.drop(index=行名)
>df.drop(行名)
  1. 删除某列
> df.drop(列名,axis=1)
> df.drop(columns=列名)

索引

  1. set_index

作用:将某列设置单索引和符合索引

DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

参数

  • append:添加新索引
  • drop:False则会保留旧索引到新列中,True则会删除旧的索引
  • inplace:是否将变量进行修改
  1. reset_index

作用:还原索引,将index变为列

```DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”) ```

参数

  • level:控制了具体要还原的那个等级的索引
  • drop:False则索引列会被还原为普通列,True将索引丢掉
  • inplace:修改变量

In [318]: data
Out[318]: c    d
a   b
bar one  z  1.0two  y  2.0
foo one  x  3.0two  w  4.0In [319]: data.reset_index()
Out[319]: a    b  c    d
0  bar  one  z  1.0
1  bar  two  y  2.0
2  foo  one  x  3.0
3  foo  two  w  4.0

数据切分

  1. pd.cut

    按值的大小均匀切分,每组区间大小相同但样本数可能不同

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', ordered=True)

参数

  • x:目标输入值
  • bins:数据类型,设置划分的组数或者指定组局
    • int
    • sequence
    • IntervalIndex
  • retbins:bool,default=False,为True时额外返回bins,即每个边界值
  • labels:array 或 bool,默认为None。传入数据时,分组的名称由label指示;传入为False时则仅显示分组下标
  • precision:精度,默认为3
    是否选择返回bins,根据示例查看区别

示例

  • bins为int类型,将x划分为bins段
>>>pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3)
#这是将x中每个值转化到对应的分段中
[(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], (0.994, 3.0]]
#根据bins将x的范围进行划分为bins段
Categories (3, interval[float64]): [(0.994, 3.0] < (3.0, 5.0] < (5.0, 7.0]]
  • 设置retbins=True
>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3,retbins=True)
([(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], (0.994, 3.0]]Categories (3, interval[float64]): [(0.994, 3.0] < (3.0, 5.0] < (5.0, 7.0]],array([0.994, 3.   , 5.   , 7.   ]))
  1. pd.qcut

    按照样本在在值上的分布频率进行切分,每组样本数相同,但是划分区间可能不同

pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')

参数

  • x:ndarray或Series

  • q:指示划分的组数,q一般小于len(x)并且被x整除

  • labels:array 或 bool,默认为None。当传入数组时,分组的名称由label指示,当传入False时,仅显示分组下标

  • retbins:bool,默认为False,当为True是,额外返回bins,即每个边界值

  • precision:int,精度,默认为3

    • float类型的list

示例

>>>pd.qcut(range(5), 4)
[(-0.001, 1.0], (-0.001, 1.0], (1.0, 2.0], (2.0, 3.0], (3.0, 4.0]]
Categories (4, interval[float64]): [(-0.001, 1.0] < (1.0, 2.0] ...>>>pd.qcut(range(5), 3, labels=["good", "medium", "bad"])
[good, good, medium, bad, bad]
Categories (3, object): [good < medium < bad]>>>pd.qcut(range(5), 4, labels=False)
array([0, 0, 1, 2, 3])

统计数目

  1. value_counts

    返回一个Series类型数据
    对一维的数据进行统计,迭代类型都可以

value_counts( values, sort: bool = True, ascending: bool = False, normalize: bool = False, bins=None,dropna: bool = True,)

In [9]: pd.value_counts(df['触感'])
Out[9]:硬滑    12软粘     5Name: 触感, dtype: int64In [10]: pd.value_counts([1,2,3,4,2])
Out[10]:2    24    13    11    1dtype: int64In [11]: res = pd.value_counts([1,2,3,4,2])
In [12]: type(res)
Out[12]: pandas.core.series.Series

2.mode
DataFrame.mode(axis=0, numeric_only=False, dropna=True)
Get the mode(s) of each element along the selected axis.:对某个轴进行统计,即为行或者列
统计出现次数最多的value,可出现多个值

其他

  1. factorize

    将对象进行编码,将其编辑为enumerate或者为categorical variable

pandas.factorize(values, sort=False, na_sentinel=- 1, size_hint=None)[source]

  • values:转换的对象
  • sort:是否排序
  • na_sentinel =
  1. pd.get_dummies(df,drop_first=True)

合并、拼接

  1. pd.concat

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)

沿着一条轴将多个对象对堆叠到一起

参数

  • objs:需要进行连接的对象,[obj1,obj2]
  • axis:axis=0,表示在水平方向(row)上进行连接;axis=1表示在垂直方向(column)进行连接
  • join:outer表示index全部需要,inner表示只取index重合的部分
  • join_axes:传入需要保留的index
  • ignore_index:忽略需要连接的frame本身的index。当原本的index没有特别意义的时候可以使用
  • keys:可以给每个需要连接的df一个label

示例

  • 合并两个Series
>>>s1 = pd.Series(['a', 'b'])
>>>s2 = pd.Series(['c', 'd'])
>>>pd.concat([s1, s2],axis=0)
0    a
1    b
0    c
1    d
>>>pd.concat([s1,s2].axis=1)
0 a c
1 b ddtype: object
  • 设置ignore_index属性为True
>>>pd.concat([s1,s2],ignore_index=True)
0    a
1    b
2    c
3    d
dtype: object
  • 添加一个分层的index
>>>pd.concat([s1, s2], keys=['s1', 's2'])
s1  0    a1    b
s2  0    c1    d
dtype: object

官方文档

  1. merge

    通过键拼接列,可以根据一个或多个键将不同的DataFrame的行连接起来

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes='_x', '_y', copy=True, indicator=False, validate=None)

参数

  • left,right:要合并的两个DataFrame对象
  • on:指的是合并(连接)的方式,由inner(内连接),left(左外连接),right(右外连接),outer(全外连接),默认为inner
  • left_on,right_on:选择将left对象和right对象进行合并时根据的列值

示例

>>>df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],'value': [1, 2, 3, 5]})
>>>df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],'value': [5, 6, 7, 8]})
>>>df1lkey value
0   foo      1
1   bar      2
2   baz      3
3   foo      5
>>>df2rkey value
0   foo      5
1   bar      6
2   baz      7
3   foo      8
>>>df1.merge(df2, left_on='lkey', right_on='rkey')lkey  value_x rkey  value_y
0  foo        1  foo        5
1  foo        1  foo        8
2  foo        5  foo        5
3  foo        5  foo        8
4  bar        2  bar        6
5  baz        3  baz        7
  1. pd.join

    拼接列,主要用于索引上的合并

join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

参数

转置,颠倒

将原来的index与column进行交换

>>> x1 = {1: 106, 2: 3, 7: 42}
>>> a = x1.keys()
>>> b = x1.values()
>>> df = pd.DataFrame([a,b],index=['type', 'cnt'])#创建dataframe
>>> df2 = pd.DataFrame(df.values.T, index=df.columns, columns=df.index)#转置
>>> print(df)0  1   2
type    1  2   7
cnt   106  3  42
>>> print(df2)type  cnt
0     1  106
1     2    3
2     7   42
>>>

numpy

排序

  1. np.argsort(x)
    官方文档

    对值进行排序,但是返回值对应的index,默认从小到大

参数

  • a:array_like
  • axis:
  • kind:{“quicksort”,“mergesort”,“heapsort”,“stable”}
    • 选择排序算法

示例

>>>x = np.array([3, 1, 2])
>>>np.argsort(x)
array([1, 2, 0])
  1. np.sort(x)

对x的值进行排序

扩展

对numpy.array类型添加一列

np.insert
numpy.insert(arr, obj, values, axis=None)
从示例中即可明白各个参数

参数

  • values:设置添加的值
  • axis:axis=0,在行上添加,axis=1,在列上添加
  • arr:在arr上进行添加
  • obj:这是设置添加的位置
>>>a = np.array([[1, 1], [2, 2], [3, 3]])
>#在a上第0列添加
>>>np.insert(a,0,values=1,axis=1)
array([[0, 1, 1],[0, 2, 2],[0, 3, 3]])
numpy.hstack

在行上进行扩展,

示例

>>>a = np.array((1,2,3))
>>>b = np.array((2,3,4))
>>>np.hstack((a,b))
array([1, 2, 3, 2, 3, 4])
>>>a = np.array([[1],[2],[3]])
>>>b = np.array([[2],[3],[4]])
>>>np.hstack((a,b))
array([[1, 2],[2, 3],[3, 4]])
numpy.vstack

其他

clip

numpy.clip(a, a_min, a_max, out=None, **kwargs)
clip官方文档

参数

  • a:array-like
  • a_min:设置下限,若是小于这个值的都被设置为a_min
  • a_max设置上限,大于a_max则变为a_max
  • out:ndarry,选填

示例

a = np.arange(10)
np.clip(a, 1, 8)
array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8])
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.clip(a, 3, 6, out=a)
array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])
a = np.arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.clip(a, [3, 4, 1, 1, 1, 4, 4, 4, 4, 4], 8)
array([3, 4, 2, 3, 4, 5, 6, 7, 8, 8])

pandas及numpy笔记相关推荐

  1. Python numpy+pandas+matplotlib学习笔记

    Python numpy+pandas+matplotlib 本文是根据b站路飞学城Python数据分析全套教程的学习视频整理归纳的学习文档,主要目的是方便自己进行查阅,详细的还得去b站看原视频.另外 ...

  2. 【Python】Pandas、Numpy性能优化秘籍(全)

    pandas.numpy是Python数据科学中非常常用的库,numpy是Python的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效.pandas是基于numpy的数据处理工具,能更方便的 ...

  3. pandas基础学习笔记(简略版)

    pandas基础学习笔记(简略版) 1.DataFrame 2.series 3.基本数据操作 4.DataFrame 运算 5.pandas绘图 6.文本的读取与存储 1.DataFrame 既有行 ...

  4. python获取matplotlib、tensorflow、pandas、numpy等的版本version

    python获取matplotlib.tensorflow.pandas.numpy的版本version python包.库之间会发生版本冲突.那么你就需要查明版本,然后确定是降级还是升级: 使用__ ...

  5. numpy 笔记: random模块

    1 基本应用 randint 随机生成大小为size的正整数ndarray low.high.size三个参数.默认high是None,如果只有low,那范围就是[0,low).如果有high,范围就 ...

  6. panda python_12个很棒的Pandas和NumPy函数,让分析事半功倍

    本文转载自公众号"读芯术"(ID:AI_Discovery) 大家都知道Pandas和NumPy函数很棒,它们在日常分析中起着重要的作用.没有这两个函数,人们将在这个庞大的数据分析 ...

  7. 12个很棒的Pandas和NumPy函数,让python数据分析事半功倍

    大家都知道Pandas和NumPy函数很棒,它们在日常分析中起着重要的作用.没有这两个函数,人们将在这个庞大的数据分析和科学世界中迷失方向. 今天,小芯将分享12个很棒的Pandas和NumPy函数, ...

  8. Python中用pandas将numpy中的数组数据保存到csv文件

    Python中用pandas将numpy中的数组数据保存到csv文件 本博客转载自:[1]https://blog.csdn.net/grey_csdn/article/details/7018587 ...

  9. python怎样装pandas_小白学python:坑一:如何安装pandas和numpy

    学python,需要安装各种各样的包,这对初学者来说,是个很大的坑.以pandas和numpy为例: 1.  需要安装好python.pip,并下载了和自己电脑版本一致的pandas: 2.安装了py ...

  10. python3.6安装pandas_python3.6更新pandas和numpy包

    python3.6更新包 python 3.6更新pandas1.0和numpy包 更新pandas 更新numpy python 3.6更新pandas1.0和numpy包 pandas版本过低的话 ...

最新文章

  1. javca中redis获取value_接口测试:如何从redis中获取短信验证码
  2. 基于struts2的寝室圈项目
  3. 【Linux】一步一步学Linux——gzip命令(63)
  4. java高性能阻塞队列,Linux c/c   后台开发组建之:高性能阻塞队列
  5. 目录操作相关的系统函数
  6. pythonselenium一个简单的自动化测试实战:百度搜索
  7. 自动根据键盘位置调整UITextView的高度
  8. C++语言实现-邻接矩阵
  9. 解析鸿蒙内核消息队列QueueMail接口的哼哈二将
  10. Selenium的一些技巧与错误处理
  11. Zookeeper-入门-安装
  12. 基于ASP.NETAJAX的WebPart开发与部署-转
  13. webstorm中文乱码问题
  14. 201703:SuiteCRM自定义筛选界面
  15. 5分钟商学院-个人篇-谈判能力
  16. 算法设计与分析 ——10-7课程总结
  17. WIN10下msi GE62 1077 无线热点掉线问题处理(更新:取消自动关闭热点
  18. 服务器柜机位置摆放电子图,柜式空调摆放位置有什么要注意的吗
  19. 【已解决】Activity MainActivity has leaked window PhoneWindow$DecorView@ that was originally added here
  20. java红宝石是哪本_以月/年红宝石显示帖子

热门文章

  1. Mark:SQL Server关于CAST和CONVERT的区别和用法
  2. Winform 可取消的单选按钮(RadioButton)
  3. 关于重定向printf出错 Error[Pe020]: identifier FILE is undefined 解决方案
  4. JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态
  5. Struts2的学习-属性驱动和模型驱动
  6. Python学习笔记(2) Python提取《釜山行》人物关系
  7. thinkphp建站-前后台文件配置
  8. Silverlight 数据绑定(Binding)
  9. ConvMF论文解读
  10. 师妹问我:如何在7分钟内彻底搞懂word2vec?