# 什么是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)
留言