当前位置:   article > 正文

Python系列 之 Pandas库_pandas to numpy

pandas to numpy

Pandas库

Pandas库是Python的核心数据分析支持库,提供了快速 灵活 明确的数据结构;
pandas主要数据结构:
Series:带标签的一维同构数组
DataFrame:带标签的 大小可变的 二维异构表格
Pandas 所有数据结构的值都是可变的,但是数据结构大小并非都是可变的;比如 Series 的长度是不可改变的,但是DataFrame的结构和值都可以改变

Pandas数据结构

Series

Series数据结构 带标签的一维同构数组;可存储整数,浮点数,字符串,Python对象等类型的数据。

创建Series对象

调用 pd.Series 函数 创建 Series:

import pandas as pd
import numpy as 
# pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
# data : Series存储的数据 支持:Python字典,多维数组,标量值
# index: Series的标签
# dtype : 数据类型
s = pd.Series(data=np.arange(10, 50, 5))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

数组构建Series的data:
如果指定index index长度需要和data一致
如果没有指定index 则会自动填充 index = range(0,len(data))

s = pd.Series(data=np.arange(10, 50, 5))
print("数组构建Series的data:\n", s)
# 输出:0,1,2,3是index
# 数组构建Series的data:
# 0    10
# 1    20
# 2    30
# 3    40
# dtype: int32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Python 字典构建Series的data:
如果未指定index 则取字典的key作为index

s = pd.Series(data={
   'a': '1', 'c': '2', 'B': '3',
                    'd': '4', 'e': '5'}, dtype=np.float64)
print("Python字典构建Series的data:\n", s)
# 输出:
# Python字典构建Series的data:
# a    1.0
# c    2.0
# B    3.0
# d    4.0
# e    5.0
# dtype: float64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

标量值 构建Series的data:
必须提供index;根据index的长度重复标量值:

s = pd.Series(data=10, index=['a', 'b', 'c'])
print("标量值构建Series的data:\n", s)
# 输出:
# 标量值构建Series的data:
# a    10
# b    10
# c    10
# dtype: int64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
Series索引和切片 选择数据

Series选择数据可以用索引和切片进行操作:

s = pd.Series(data=np.arange(10, 20, 2), index=['a', 'b', 'c', 'd', 'e'])
print(s)
# 输出:
# a    10
# b    12
# c    14
# d    16
# e    18
# dtype: int32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

下标索引选择数据:

# 下标索引
print("下标索引访问Series数据:\n",s[4])
# 输出:
# 下标索引访问Series数据:
#  18
  • 1
  • 2
  • 3
  • 4
  • 5

标签(index)访问Series数据:

#  Series 的标签 如果标签不存在 会报KeyError
print("标签(index)访问Series数据:\n",s['a'])
# 输出:
# 标签(index)访问Series数据:
# 10
  • 1
  • 2
  • 3
  • 4
  • 5

Series.get方法访问Series数据:

# Series.get(index,default) 如果标签index不存在 返回default
print("Series.get方法:\n", s.get('a', np.nan))
# 输出
# Series.get方法:
# 10
  • 1
  • 2
  • 3
  • 4
  • 5

切片:下标索引 切片

# 下标索引 切片
print("下标索引切片访问Series数据:\n",s[0:4])
# 输出
# 下标索引切片访问Series数据:
# a    10
# b    12
# c    14
# d    16
# dtype: int32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

切片:Series的标签 切片

# Series的标签 切片
print("标签(index)切片访问Series数据:\n",s['a':'b'])
# 输出
# 标签(index)切片访问Series数据:
# a    10
# b    12
# dtype: int32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
Series name属性和rename方法

name属性:

s = pd.Series(np.nan, name='name_s')
print('Series的name属性:\n', s.name)
# 输出
# Series的name属性:
# name_s
  • 1
  • 2
  • 3
  • 4
  • 5

rename方法:

# 更改s的name=re_name_s  inplace=True 表示不创建新的对象,直接对原始对象进行修改
s.rename('re_name_s', inplace=True)
print('Series的rename方法:\n', s.name)
# 输出
# Series的rename方法:
# re_name_s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

DataFrame

DataFrame 是由多种类型的列购成的二维标签数据结构,类似Excel SQL表;
包含 index(行标签)和columns(列标签);
支持多种类型的数据输入:一维ndarray、 列表 、字典、 Series字典、 二维np.ndarray 结构、多维数组或记录多维数组 、 Series、 DataFrame;

创建DataFrame对象

调用 pd.DataFrame()方法生成DataFrame对象:

pd.DataFrame(data=None, index=[], columns=[], dtype=None, copy=False)
  • 1

Python 字典生成DataFrame:字典的key会生成DataFrame的columns:

data_dict = {
   'A': '0', 'B': '1', 'C': '2'}
df = pd.DataFrame(data=data_dict, index=[0], dtype=float)
print("Python字典生成DataFrame:\n", df)
# 输出 A,B,C 是columns(列标签)  0 是index(行标签)
# Python字典生成DataFrame:
#      A    B    C
# 0  0.0  1.0  2.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Series字典生成DataFrame:
Series字典的key会生成DataFrame的columns,Series的index生成DataFrame的Index

series_dict = {
   'a': pd.Series(data=np.arange(5)),
               'b': pd.Series(data=np.arange(6))}
df = pd.DataFrame(data=series_dict, dtype=float)
print("Series字典生成DataFrame:\n", df)
# 输出a,b是列标签 0-5是行标签
# Series字典生成DataFrame:
#      a    b
# 0  0.0  0.0
# 1  1.0  1.0
# 2  2.0  2.0
# 3  3.0  3.0
# 4  4.0  4.0
# 5  NaN  5.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

数组字典生成DataFrame:
数组字典中的数组长度必须一致;字典的key会生成DataFrame的columns;如果未指定index index=range(数组的长度)

array_dict = {
   'a': np.arange(0, 3), 'b': np.arange(
    3, 6), 'c': np.arange(6, 9)}
df = pd.DataFrame(data=array_dict)
print("数组字典生成DataFrame:\n", df)
# 输出
# 数组字典生成DataFrame:
#    a  b  c
# 0  0  3  6
# 1  1  4  7
# 2  2  5  8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

列表字典生成DataFrame:
未指定columns 由字典key生成
列表中第一个字典是第一行数据,第二个是第二行…

list_dict = [{
   'a': 0},
             {
   'a': 1, 'b': 2},
             {
   'c': 3}]
df = pd.DataFrame(data=list_dict)
print("列表字典生成DataFrame:\n", df)
# 输出
# 列表字典生成DataFrame:
#      a    b    c
# 0  0.0  NaN  NaN
# 1  1.0  2.0  NaN
# 2  NaN  NaN  3.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

用Series创建DataFrame:
如果未指定columns Series.name生成columns

s1 = pd.Series(data=[0, 1, 2]
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/990173
    推荐阅读
    相关标签
      

    闽ICP备14008679号