立即登录

注册账号

联系我们

2022年5月17日 11:25

6.Dataframe

# 什么是Dataframe 带有行索引与列标题的二维数据结构
# DataFrame是一种二维标记数据结构
# 每一列的数据类型可以不同
# 索引(行标签)和 列(列标签)

import numpy as np
import pandas as pd
rng = np.random.default_rng(0)
# 三要素 
# 1. 数据(可以通过numpy建立) data  
# 2. 列标签 数组(可以由列表建立) columns
# 3. 行标签 数组指定, 也可以不指定,默认用行下标来表示 index
data = rng.random((2,3))
columns = np.array(['a','b','c']) # columns = list('abc')
pd.DataFrame(data=data,columns=columns)
# 三要素 
# 1. 数据(可以通过numpy建立) data  
# 2. 列标签 数组(可以由列表建立) columns
# 3. 行标签 数组指定, 也可以不指定,默认用行下标来表示 index
data = rng.random((2,3))
columns = np.array(['a','b','c']) # columns = list('abc')
index = np.array([1,2])  # index = [1,2]
pd.DataFrame(data=data,index=index,columns=columns)

通过多个Series构建DataFrame

# 构建一个列数据类型不同的Dataframe
# DataFrame 是由含有列标签的多个Series(1维标记数组)组成 ,长度相同,标记也相同 
# 构建一个字典: 
# 字典转换为Dataframe
one = pd.Series(rng.random(3),index=['a','b','c'])
two = pd.Series(np.arange(2,5),index=['a','b','c']) 
d = {'one':one,'two':two}
pd.DataFrame(d)

包含多个字典的列表转换为DataFrame

# 列表转换为DataFrame 
# 形如 包含多个字典的列表,其中每个字典键最好完全一致.
# mongo json(爬虫) 
d = [{'name':"卢炎",'age':17},{'name':"王婷",'age':18}]
pd.DataFrame(d)
# 非结构化的数据,会出现空值,会给后期处理带来困扰(数据清洗的工作)
d = [{'name':"卢炎",'age':17,'gender':'female'},{'name':"李四",'age':23}]
pd.DataFrame(d)
d = {
    '员工姓名':pd.Series(['卢炎','王婷','成浩','森驰'],index=['001','002','003','004']),
    '销售业绩':pd.Series([30000.0,20000.0,50000.0],index=['001','002','003']),
    '提成收入':pd.Series([6000.0,4000.0,10000.0],index=['001','002','003'])
}
pd.DataFrame(d)
d = [{'name':"卢炎",'age':17},{'name':"王婷",'age':18},
     {'name':"成浩",'age':18},{'name':"森驰",'age':18}]
df = pd.DataFrame(d)
df
# 从旧dataframe中索引(通过)出新的dataframe
print(pd.DataFrame(df,index=[0,1,3]))
print(df)
# 原dataframe并没有改变

# 可以从旧DataFrame索引(columns)出特定的列(dataframe)
pd.DataFrame(df,columns=['name'])

# 特殊情况 index没找到  columns没找到 np.nan
pd.DataFrame(df,index=[1,5],columns=['name','gender'])
# df index  columns
df.index

df.columns

d = [{'name':"卢炎",'age':17},{'name':"王婷",'age':18}]
df = pd.DataFrame(d)
print(df)
df.index = ['001','002']
print(df)
df.columns = ['姓名','年龄']
print(df)

 

留言

给我留言