pandas系列之DataFrame数据结构

937 阅读3分钟

1.DataFrame介绍

​ DataFrame是由一组数据与一对索引(行索引和列索引)组成的表格型数据结构,与Excel的数据形式类似。

​ eg:

QQ拼音截图未命名.png

该数据结构和Excel的数据结构很像,既有行索引又有列索引,由行索引和列索引确定唯一值

2.DataFrame创建

import pandas as pd

方法:pd.DataFrame()

给方法传入不同的对象即可实现创建DataFrame对象

2.1 传入一个列表创建

2.1.1 只传入一个单一列表

s1 = pd.DataFrame(["a", "b", "c", "d"])
print(s1)

result:

   0
0  a
1  b
2  c
3  d

此时该列表的值会显示成一列,且行和列都是从0开始的默认索引

2.1.2 传入一个嵌套列表

s2 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]])
print(s2)

result:

   0  1
0  a  A
1  b  B
2  c  C
3  d  D

此时会根据列表数显示成多列数据,行、列索引同样是从0开始的默认索引

2.1.3 传入一个字典组成的列表

import pandas as pd
​
data = [{'x': 1, 'y': 2, 'z': 3}, {'x': 11, 'y': 22, 'z': 33}]
df = pd.DataFrame(data)
print(df)

result:

    x   y   z
0   1   2   3
1  11  22  33

2.1.4 设置行索引

通过设置index参数自定义行索引

s2 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]], index=["一", "二", "三", "四"])
print(s2)

result:

   0  1a  Ab  B
三  c  C
四  d  D

2.1.5 设置列索引

通过设置columns参数自定义列索引

s4 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]], columns=["小写字母", "大写字母"])
print(s4)

result:

  小写字母 大写字母
0    a    A
1    b    B
2    c    C
3    d    D

2.1.6 同时设置行索引和列索引

s5 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]], index=["一", "二", "三", "四"],
                  columns=["小写字母", "大写字母"])
print(s5)

result:

  小写字母 大写字母
一    a    A
二    b    B
三    c    C
四    d    D

2.2 传入字典创建

2.2.1 普通字典

s6 = pd.DataFrame({'小写字母': ['a', 'b', 'c', 'd'], '大写字母': ['A', 'B', 'C', 'D']})
print(s6)

result:

  小写字母 大写字母
0    a    A
1    b    B
2    c    C
3    d    D

此时字典的key相当于列索引,行索引使用从0开始的默认索引

2.2.2 由Series组成的字典

这是一种非常典型的构造数据的方法,字典里的一个键值对为一列数据,键为列名,值是一个Series

import pandas as pd
​
d = {'x': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'y': pd.Series([11, 22, 33], index=['a', 'b', 'c'])}
df = pd.DataFrame(d)
print(df)

result:

   x   y
a  1  11
b  2  22
c  3  33

2.2.3 设置行索引

通过设置index参数自定义行索引

s6 = pd.DataFrame({'小写字母': ['a', 'b', 'c', 'd'], '大写字母': ['A', 'B', 'C', 'D']},
                  index=["一", "二", "三", "四"])
print(s6)

result:

  小写字母 大写字母
一    a    A
二    b    B
三    c    C
四    d    D

2.3 传入Series创建

import pandas as pd
​
s = pd.Series(['a', 'b', 'c', 'd', 'e'])
df = pd.DataFrame(s)
print(df)

result:

   0
0  a
1  b
2  c
3  d
4  e

2.4 其他方法

2.4.1 通过字典生成

import pandas as pd
​
data = {'小写字母': ['a', 'b', 'c', 'd'], '大写字母': ['A', 'B', 'C', 'D']}
df = pd.DataFrame.from_dict(data)
print(df)

result:

  小写字母 大写字母
0    a    A
1    b    B
2    c    C
3    d    D

2.4.2 从列表、元组和ndarray生成

import pandas as pd
​
data = [['a', 'b', 'c', 'd'], ['A', 'B', 'C', 'D']]
df = pd.DataFrame.from_records(data)
print(df)

result:

   0  1  2  3
0  a  b  c  d
1  A  B  C  D

3.获取索引

3.1 获取行索引

通过index方法获取DataFrame的行索引

s1 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]], index=["一", "二", "三", "四"],
                  columns=["小写字母", "大写字母"])
print(s1.index)

result:

Index(['一', '二', '三', '四'], dtype='object')

3.2 获取列索引

通过columns方法获取DataFrame的列索引

s1 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]], index=["一", "二", "三", "四"],
                  columns=["小写字母", "大写字母"])
print(s1.columns)

result:

Index(['小写字母', '大写字母'], dtype='object')