DataFrame对象
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
构造方法:
-
pandas.DataFrame( data, index, columns, dtype, copy)
参数说明:
-
data:一组数据(ndarray、series, map, lists, dict 等类型)。
-
index:索引值,或者可以称为行标签。
-
columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
-
dtype:数据类型。
-
copy:拷贝数据,默认为 False。
Pandas DataFrame 是一个二维的数组结构,类似二维数组。
实例-创建
import pandas as pd
# 列表方式创建DataFrame对象
data=[['小太阳',320.9,100],['鼠标',150.3,50],['小刀',1.5,200]]
columns=['名称','单价','数量']
df=pd.DataFrame(data=data,columns=columns)
print(df)
'''
名称 单价 数量
0 小太阳 320.9 100
1 鼠标 150.3 50
2 小刀 1.5 200
'''
print(type(df)) # <class 'pandas.core.frame.DataFrame'>
# 字典方式创建DataFrame对象--方法一
data={
'名称':['小太阳','鼠标','小刀'],
'单价':[320.9,150.3,1.5],
'数量':[100,50,200],
'公司名称':'东门超市'
}
df1=pd.DataFrame(data=data)
print(df1)
'''
名称 单价 数量 公司名称
0 小太阳 320.9 100 东门超市
1 鼠标 150.3 50 东门超市
2 小刀 1.5 200 东门超市
'''
# 字典方式创建DataFrame对象--方法二
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df2 = pd.DataFrame(data)
print (df2)
'''
a b c
0 1 2 NaN
1 5 10 20.0
'''
# 没有对应的部分数据为 NaN。
DataFrame的重要属性
序号 | 属性 | 描述 |
---|---|---|
1 | values | 查看所有元素的值,返回ndarray对象 |
2 | dtypes | 查看所有元素的类型 |
3 | index | 查看所有行名、重命名行名 |
4 | columns | 查看所有列名、重命名列名 |
5 | T | 行列数据转换 |
6 | head | 查看前N条数据,默认5条 |
7 | tail | 查看后N条数据,默认5条 |
8 | shape | 查看行数和列数shape[0]表示行,shape[1]表示列 |
9 | info | 查看索引、数据类型和内存信息 |
实例:
import pandas as pd
data=[['小太阳',320.9,100],['鼠标',150.3,50],['小刀',1.5,200]]
columns=['名称','单价','数量']
df=pd.DataFrame(data=data,columns=columns)
print(df)
'''
名称 单价 数量
0 小太阳 320.9 100
1 鼠标 150.3 50
2 小刀 1.5 200
'''
print('查看所有元素的值\n',df.values,type(df.values))
'''
[['小太阳' 320.9 100]
['鼠标' 150.3 50]
['小刀' 1.5 200]] <class 'numpy.ndarray'>
'''
print('查看所有元素的类型\n',df.dtypes)
'''
名称 object
单价 float64
数量 int64
dtype: object
'''
print('查看所有行名称\n',list(df.index),type(df.index))
'''
[0, 1, 2] <class 'pandas.core.indexes.range.RangeIndex'>
'''
df.index=[1,2,3] # 设置行标签
print(df)
'''
名称 单价 数量
1 小太阳 320.9 100
2 鼠标 150.3 50
3 小刀 1.5 200
'''
print('查看列索引\n',df.columns)
# Index(['名称', '单价', '数量'], dtype='object')
df.columns=['商品名称','最新单价','实时数量'] # 设置列标签
print(df)
'''
商品名称 最新单价 实时数量
1 小太阳 320.9 100
2 鼠标 150.3 50
3 小刀 1.5 200
'''
# 行列数据的转换
pd.set_option('display.unicode.east_asian_width',True) # 规整 格式
new_df=df.T
print(new_df)
'''
1 2 3
商品名称 小太阳 鼠标 小刀
最新单价 320.9 150.3 1.5
实时数量 100 50 200
'''
print('查看前N条数据\n',df.head(1))
'''
商品名称 最新单价 实时数量
1 小太阳 320.9 100
'''
print('查看后N条数据\n',df.tail(1))
'''
商品名称 最新单价 实时数量
3 小刀 1.5 200
'''
DataFrame的重要函数
序号 | 函数 | 描述 |
---|---|---|
1 | describe() | 查看每列的统计汇总信息,DataFrame类型 |
2 | count() | 返回每一列的非空值的个数 |
3 | sum() | 返回每一列的和,无法计算返回空值 |
4 | max() | 返回每一列的最大值 |
5 | min() | 返回每一列的最小值 |
import pandas as pd
data=[['sun',320.9,100],['mouse',150.3,50],['knife',1.5,200]]
columns=['名称','单价','数量']
df=pd.DataFrame(data=data,columns=columns)
print(df)
'''
名称 单价 数量
0 sun 320.9 100
1 mouse 150.3 50
2 knife 1.5 200
'''
print(df.describe())
'''
单价 数量
count 3.000000 3.000000
mean 157.566667 116.666667
std 159.823945 76.376262
min 1.500000 50.000000
25% 75.900000 75.000000
50% 150.300000 100.000000
75% 235.600000 150.000000
max 320.900000 200.000000
'''
print(df.count())
'''
名称 3
单价 3
数量 3
dtype: int64
'''
print(df.sum()) # 名称字符串也会求和放到一起
'''
名称 sunmouseknife
单价 472.7
数量 350
dtype: object
'''
print(df.max())
'''
名称 sun
单价 320.9
数量 200
dtype: object
'''
print(df.min())
'''
名称 knife
单价 1.5
数量 50
dtype: object
'''