声明:此文只是对《对比excel,轻松学习python数据分析》这本书的读书笔记,文章中的代码均来源于书中,仅以知识分享为用途,后续我会继续支持作者,也会继续读完这本书,如有侵权,请留言我删除
pandas数据结构
Series数据结构
- 需要导入的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
- 什么是
Series
数据结构
0 a
1 b
2 c
3 d
dtype: object
Series是一种类似于一维数组的对象,由一组数据及一组数据与之相关的数据标签组成,像上面的这种数据结构就是Series,第一列数字是数据标签,第二列是具体的数据,数据标签与数据一一对应
- 创建一个
Series
# 利用pandas的Series()方法创建
S1 = pd.Series(['a', 'b', 'c', 'd'])
print(S1)
0 a
1 b
2 c
3 d
dtype: object
如果只是传入一个列表不指定数据标签,那么Series会默认使用从0开始的数做数据标签,上面的0.1.2.3就是默认的数据标签
- 指定索引
直接传入一个列表会使用默认索引,也可以通过设置index参数来自定义索引
S1 = pd.Series([1, 2, 3, 4]) # 创建序列
S1.index = ['a', 'b', 'c', 'd'] # 通过index方法指定索引
print(S1)
a 1
b 2
c 3
d 4
dtype: int64
- 传入一个字典
也可以将数据与数据标签以key,value的形式传入,这样字典里的key就是数据标签,value就是数据值
dic = {'a1': 1, 'b2': 2, 'c3': 3, 'd4': 4}
s1 = pd.Series(dic)
print(s1)
a1 1
b2 2
c3 3
d4 4
dtype: int64
- 利用index方法获取Series的索引
获取一组数据的索引:利用index方法就可以获取Series的索引值
S1 = pd.Series(['a', 'b', 'c', 'd'])
print(S1.index)
RangeIndex(start=0, stop=4, step=1) # 连续数字提示起止位置及步长
dic = {'a1': 1, 'b2': 2, 'c3': 3, 'd4': 4}
s1 = pd.Series(dic)
print(s1.index)
Index(['a1', 'b2', 'c3', 'd4'], dtype='object') # 自定义索引显示索引值
- 利用values方法获取Series的值
与索引值对应的就是获取Series的值,使用values方法
S1 = pd.Series(['a', 'b', 'c', 'd'])
print(S1.index)
[1 2 3 4]
dic = {'a1': 1, 'b2': 2, 'c3': 3, 'd4': 4}
s1 = pd.Series(dic)
print(s1.index)
['a' 'b' 'c' 'd']
DataFrame 表格型数据结构
DateFrame是什么
Series是由一组数据与一组索引组成的数据结构,而DateFrame是由一组数据与一对索引组成的表格型数据结构
创建一个DateFrame
- 传入一个列表
df1 = pd.DataFrame(['a', 'b', 'c', 'd'])
print(df1)
0
0 a
1 b
2 c
3 d
这里只传入了一个单一的列表,该列表的值就会显示成一列,且行和列都是从0开始的默认索引
- 传入一个嵌套列表
df2 = pd.DataFrame([['a', 'A'], ['b', 'B'], ['c', 'C'], ['d', 'D']])
print(df2)
0 1
0 a A
1 b B
2 c C
3 d D
当传入一个嵌套列表时,会根据嵌套列表数显示成多列数据,行,列索引同样是从0开始的,列表里嵌套的列表也可以换成元组
df2 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')])
print(df2)
0 1
0 a A
1 b B
2 c C
3 d D
- 指定行,列索引
DateFrame()方法的行,列索引都是默认的,通过设置columns参数自定义列索引
# 设置列索引
df31 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')], columns=['小写', '大写'])
print(df31)
小写 大写
0 a A
1 b B
2 c C
3 d D
# 设置行索引
df32 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')], index=['一', '二', '三', '四'])
print(df32)
0 1
一 a A
二 b B
三 c C
四 d D
- 传入一个字典
date = {'小写': ['a', 'b', 'c', 'd'], '大写': ['A', 'B', 'C', 'D']}
df41 = pd.DataFrame(date)
print(df41)
小写 大写
0 a A
1 b B
2 c C
3 d D
直接以字典的形式传入DateFrame时,字典的key值就相当于列索引,如果没有设置行索引,行索引默认还是从0开始,同时我们也可以设置行索引
date = {'小写': ['a', 'b', 'c', 'd'], '大写': ['A', 'B', 'C', 'D']}
df42 = pd.DataFrame(date, index=['一', '二', '三', '四'])
print(df42)
小写 大写
一 a A
二 b B
三 c C
四 d D
获取DateFrame的行,列索引
# 前例代码
df2 = pd.DataFrame([['a', 'A'], ['b', 'B'], ['c', 'C'], ['d', 'D']])
df3 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')], index=['一', '二', '三', '四'],
columns=['小写', '大写'])
# 用columns方法获取列索引
print(df2.columns)
RangeIndex(start=0, stop=2, step=1)
print(df3.columns)
Index(['小写', '大写'], dtype='object')
# 用index方法获取行索引
print(df2.index)
RangeIndex(start=0, stop=4, step=1)
print(df3.index)
Index(['一', '二', '三', '四'], dtype='object')