pandas创建二维数据类型——DataFrame
创建二维数据的几种方法
- 方法1: 通过列表创建
DataFRame对象里面包含两个索引, 行索引(0轴, axis=0), 列索引(1轴, axis=1)
li = [
[1, 2, 3, 4],
[2, 3, 4, 5]
]
# DataFRame对象里面包含两个索引, 行索引(0轴, axis=0), 列索引(1轴, axis=1)
d1 = pd.DataFrame(data=li, index=['A', 'B'], columns=['views', 'loves', 'comments', 'tranfers'])
print(d1)
- 方法2: 通过numpy对象创建
narr = np.arange(8).reshape(2, 4)
d2 = pd.DataFrame(data=narr, index=['A', 'B'], columns=['views', 'loves', 'comments', 'tranfers'])
print('方法二\n',d2)`
- 方法三: 通过字典的方式创建;
dict = {
'views': [1, 2, ],
'loves': [2, 3, ],
'comments': [3, 4, ]
}
d3 = pd.DataFrame(data=dict, index=['粉条', "粉丝"])
print('方法三\n',d3)
- 按索引创建二维数组
# 行索引
dates = pd.date_range(start='today', periods=6)
# 数据
data_arr = np.random.randn(6, 4)
# 列索引
columns = ['A', 'B', 'C', 'D']
d4 = pd.DataFrame(data_arr, index=dates, columns=columns)
print('索引\n',d4)
- 练习:建立一个以2019年每一天作为索引, 值为随机数;
dates = pd.date_range(start='1/1/2019', end='12/31/2019', freq='D')
datas = np.random.randn(len(dates))
s1 = pd.Series(datas, index=dates)
print('一维练习',s1[:3])
DataFrame的基本操作
创建二维数组:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
narr = np.arange(8).reshape(2, 4)
# DataFRame对象里面包含两个索引, 行索引(0轴, axis=0), 列索引(1轴, axis=1)
d2 = pd.DataFrame(data=narr, index=['A', 'B'], columns=['views', 'loves', 'comments', 'tranfers'])
print(d2)
1). 查看基础属性
- 显示头部和尾部的几行, 默认5行
- 获取行数和列数
- 获取数据类型,获取维度
- 对数组进行索引,显示索引位置对应的数值
print('获取行数和列数\n',d2.shape) # 获取行数和列数;
print('列数据类型\n',d2.dtypes) # 列数据类型
print('获取数据的维度\n',d2.ndim) # 获取数据的维度
print('行索引\n',d2.index) # 行索引
print('列索引\n',d2.columns) # 列索引
print('对象的值\n',d2.values, type(d2.values)) # 对象的值, 二维ndarray数组;
2). 数据整体状况的查询
- 显示头部和尾部的几行,默认5行:
head 和tail - 相关信息的预览:行数, 列数, 列类型, 内存占用
info - 快速综合用计结果: 计数, 均值, 标准差, 最小值, 1/4位数, 中位数, 3/4位数, 最大值;
describe
print('头部\n',d2.head(1)) # 显示头部的几行, 默认5行
print('尾部\n',d2.tail(1)) # 显示尾部的几行, 默认5行
# print("*"*10)
# 相关信息的预览: 行数, 列数, 列类型, 内存占用
print("info:", d2.info())
print("统计".center(50, '*'))
# 快速综合用计结果: 计数, 均值, 标准差, 最小值, 1/4位数, 中位数, 3/4位数, 最大值;
print(d2.describe())
3). 转置操作
print('转置操作\n',d2.T)
4). 按列进行排序
按照指定列进行排序, 默认是升序, 如果需要降序显示,设置ascending=False;
print('按列进行排序\n',d2)
# 按照指定列进行排序, 默认是升序, 如果需要降序显示,设置ascending=False;
print('按照指定列进行降序排列\n',d2.sort_values(by="views", ascending=False))
5). 切片及查询
- 可以实现切片, 但是不能索引
- 通过标签查询, 获取单列信息
- 通过标签查询多列信息
print('可以实现切片, 但是不能索引\n',d2[:1]) # 可以实现切片, 但是不能索引;
print('1:\n', d2['views']) # 通过标签查询, 获取单列信息
print('2:\n', d2.views) # 和上面是等价的;
print('标签查询多列信息\n',d2[['views', 'comments']]) # 通过标签查询多列信息
6). 通过类似索引的方式查询;
- iloc(通过位置进行行数据的获取),
- loc(t通过标签索引行数据)
print(d2)
print('iloc(通过位置进行行数据的获取)\n',d2.iloc[0])
print(d2.iloc[-1:])
print('loc(t通过标签索引行数据)\n',d2.loc['A'])
7). 更改pandas的值;
d2.loc['A'] = np.nan
print(d2)