Python学习之Pandas介绍

Python学习之Pandas介绍

一、介绍

大家好本人小白,整理资料供学习和参考,大部分来自Pandas官方文档https://pandas.pydata.org/

二、正文

1、pandas介绍和安装

pandas是建立在NumPy上的一个Python包,一款强大的开源数据分析工具。虽然NumPy能很好的处理某个数据,但是对于表、库之类的数据模型就需要pandas了。它非常适合处理以下数据。

1、表格数据(tabular),如SQLtabel or excel等column是不同类型的(heterogeneously-typed columns)
2、具有行列标签的矩阵数据
3、任何其他形式的观察/统计数据集。数据完全不需要标记就可以放入pandas数据结构中

pandas的安装 同样的也是用pip进行安装

pip install pandas

项目中的导包也是一样的,通常改名为pd

import pandas as pd

2、自带的数据结构 series和DataFrame

pandas有两个主要自带的数据结构分别是series(一维)和DataFrame(二维)

dimensions(维度) Name Description
1 Series 一维的同类型数组
2 DataFrame 一般为二维的、可以是不同列类型的数组
2.1 series对象创建(object creation)

Series是一个一维标记数组,能够保存任何数据类型(整数,字符串,浮点数,Python对象等)

1、可以通过列表list来传值创建一个series对象,这个对象的index是按默认从0开始排序的

>>>s = pd.Series([1, 3, "牛马哥", 7, 6, 8]) #Creating a Series by passing a list of values
>>>print(s) 

0      1
1      3
2    牛马哥  #可以从中发现series可以存储不同的数据类型
3      7
4      6
5      8
dtype: object #可以看出每一个数据都有自己的index,如“牛马哥”这个数据的index是2

2、可以在series构造函数中添加index的值

>>>s = pd.Series(["牛马哥", "是", "一个","菜鸡", 6, 6],index=np.arange(1,7))
>>>print(s)

1    牛马哥   #可以看出index从1开始排列
2      是
3     一个
4     菜鸡
5      6
6      6
dtype: object

3、标量值生成Series

>>> d = pd.Series(5., index=['a', 'b', 'c', 'd', 'e'])
>>> print(d)
a    5.0
b    5.0
c    5.0
d    5.0
e    5.0
dtype: float64

4、可以用python中的字典创建series

>>>s = {'第一个index':100,'第二个index':150,'第三个index':130} 
>>>s_series = pd.Series(s)
>>>print(s_series)  

第一个index    100
第二个index    150
第三个index    130
dtype: int64 # 会发现字典的key值会变成每条数据的index

​ 注意:data 为字典,且未设置 index 参数时,如果 Python 版本 >= 3.6 且 Pandas 版本 >= 0.23,Series 按字典的插入顺序排序索引。Python < 3.6 或 Pandas < 0.23,且未设置 index 参数时,Series 按字母顺序排序字典的键(key)列表。上例中,如果 Python < 3.6 或 Pandas < 0.23,Series 按字母排序字典的键。输出结果不是 [‘b’, ‘a’, ‘c’],而是 [‘a’, ‘b’, ‘c’]

5、Series 操作与 ndarray 类似,支持大多数 NumPy 函数,还支持索引切片。

2.2 DataFrame对象创建(object creation)

DataFrame不单单可以用,如index = []来设置index之外,还可以用columns = []来设置列标签

1、通过传递日期时间索引(DatetimeIndex,先使用后面会讲解)和Numpy数组来创建DataFrame

>>>dates = pd.date_range("20130101", periods=6)  #pandas另外的数据结构 DatetimeIndex,主要是时间索引
>>>df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
>>>print(df)
 				 A         B         C         D   #DatetimeIndex中periods就是时间的间隔
2013-01-01 -0.362514  0.920888  0.742842 -0.899137
2013-01-02 -0.018456  0.001944  1.579725 -1.144949
2013-01-03  1.457461 -0.054614  0.298978 -1.168914
2013-01-04 -1.341478 -0.440118  1.477190 -0.387820
2013-01-05 -1.266237  1.145619  0.539587  0.063641
2013-01-06  1.832329  1.831395  0.045710  0.802781

2、DataFrame和series相同也可以通过dictionary来传值来创建对象,只不过字典的key值是来当作列标签

>>>df2 = pd.DataFrame(
...    {
...        "A": 1.0,
...        "B": pd.Timestamp("20130102"),
...        "C": pd.Series(1, index=list(range(4)), dtype="float32"),
...        "D": np.array([3] * 4, dtype="int32"),
...        "E": pd.Categorical(["test", "train", "test", "train"]),
...        "F": "foo",
...    }
...)
>>> print(df2)

     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo

3、用列表字典生成 DataFrame

>>> data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]  
>>> res = pd.DataFrame(data)
>>> print(res)
   a   b     c
0  1   2   NaN
1  5  10  20.0

​ 如上图代码 {‘a’: 1, ‘b’: 2} 代表index = 0的数据,{‘a’: 5, ‘b’: 10, ‘c’: 20}代表index = 1的数据

4、用元组字典生成 DataFrame

>>>res = pd.DataFrame({('a', 'b'): {('A', 'B'): 1, ('A', 'C'): 2},
   	               ('a', 'a'): {('A', 'C'): 3, ('A', 'B'): 4},
   	               ('a', 'c'): {('A', 'B'): 5, ('A', 'C'): 6},
   	               ('b', 'a'): {('A', 'C'): 7, ('A', 'B'): 8},
  	               ('b', 'b'): {('A', 'D'): 9, ('A', 'B'): 10}})
>>>print(res)
       a              b      
       b    a    c    a     b     #元组字典可以自动创建多层索引 DataFrame。
A B  1.0  4.0  5.0  8.0  10.0
  C  2.0  3.0  6.0  7.0   NaN
  D  NaN  NaN  NaN  NaN   9.0

当然pandas也是可以多维度的,可以用轴0、轴1、轴2来表示,但是在表格数据(二维)中行和列明显比轴更好理解,更有阅读性。

我特别喜欢pandas的原因之一还有它强大的IO工具,能读写平面文件(such as CSV),对数据库、excel非常方便。同时能轻松处理各类型数据。

三、词汇解释和英语

1、index:行标签,索引
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_58512942/article/details/125630331