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)

pandas创建二维数据类型——DataFrame

  • 方法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)`

pandas创建二维数据类型——DataFrame

  • 方法三: 通过字典的方式创建;
dict = {
    'views': [1, 2, ],
    'loves': [2, 3, ],
    'comments': [3, 4, ]

}
d3 = pd.DataFrame(data=dict, index=['粉条', "粉丝"])
print('方法三\n',d3)

pandas创建二维数据类型——DataFrame

  • 按索引创建二维数组
# 行索引
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)

pandas创建二维数据类型——DataFrame

  • 练习:建立一个以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])

pandas创建二维数据类型——DataFrame

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)

pandas创建二维数据类型——DataFrame
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数组;

pandas创建二维数据类型——DataFrame
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())

pandas创建二维数据类型——DataFrame
3). 转置操作

print('转置操作\n',d2.T)

pandas创建二维数据类型——DataFrame
4). 按列进行排序
按照指定列进行排序, 默认是升序, 如果需要降序显示,设置ascending=False;

print('按列进行排序\n',d2)
# 按照指定列进行排序, 默认是升序, 如果需要降序显示,设置ascending=False;
print('按照指定列进行降序排列\n',d2.sort_values(by="views", ascending=False))

pandas创建二维数据类型——DataFrame
5). 切片及查询

  • 可以实现切片, 但是不能索引
  • 通过标签查询, 获取单列信息
  • 通过标签查询多列信息
print('可以实现切片, 但是不能索引\n',d2[:1])   # 可以实现切片, 但是不能索引;
print('1:\n', d2['views'])   # 通过标签查询, 获取单列信息
print('2:\n', d2.views)   # 和上面是等价的;
print('标签查询多列信息\n',d2[['views', 'comments']])  # 通过标签查询多列信息

pandas创建二维数据类型——DataFrame
6). 通过类似索引的方式查询;

  • iloc(通过位置进行行数据的获取),
  • loc(t通过标签索引行数据)
print(d2)
print('iloc(通过位置进行行数据的获取)\n',d2.iloc[0])
print(d2.iloc[-1:])
print('loc(t通过标签索引行数据)\n',d2.loc['A'])

pandas创建二维数据类型——DataFrame
7). 更改pandas的值;

d2.loc['A'] = np.nan
print(d2)

pandas创建二维数据类型——DataFrame