Python Pandas库学习
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))
数组构建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
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
标量值 构建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
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
下标索引选择数据:
# 下标索引
print("下标索引访问Series数据:\n",s[4])
# 输出:
# 下标索引访问Series数据:
# 18
标签(index)访问Series数据:
# Series 的标签 如果标签不存在 会报KeyError
print("标签(index)访问Series数据:\n",s['a'])
# 输出:
# 标签(index)访问Series数据:
# 10
Series.get方法访问Series数据:
# Series.get(index,default) 如果标签index不存在 返回default
print("Series.get方法:\n", s.get('a', np.nan))
# 输出
# Series.get方法:
# 10
切片:下标索引 切片
# 下标索引 切片
print("下标索引切片访问Series数据:\n",s[0:4])
# 输出
# 下标索引切片访问Series数据:
# a 10
# b 12
# c 14
# d 16
# dtype: int32
切片:Series的标签 切片
# Series的标签 切片
print("标签(index)切片访问Series数据:\n",s['a':'b'])
# 输出
# 标签(index)切片访问Series数据:
# a 10
# b 12
# dtype: int32
Series name属性和rename方法
name属性:
s = pd.Series(np.nan, name='name_s')
print('Series的name属性:\n', s.name)
# 输出
# Series的name属性:
# name_s
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
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)
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
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
数组字典生成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
列表字典生成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
用Series创建DataFrame:
如果未指定columns Series.name生成columns
s1 = pd.Series(data=[0, 1, 2], name
文章评论