数据分析_Python学习10之Pandas学习(Dataframe)

1.创建DataFrame
1.1 使用二维数组

from pandas import Series, DataFrame
import pandas as pd
import numpy as np

df1 = DataFrame(np.random.randint(0, 10, (4, 4)), index=[1, 2, 3, 4], columns=['a', 'b', 'c', 'd'])
print(df1)

在这里插入图片描述
1.2 使用字典创建(行索引由index决定,列索引由字典的key决定)

dict = {
    'name': ['A', 'B', 'C'],
    'score': [90, 80, 70],
    'height': [1.58, 1.67, 1.66]
}
df2 = DataFrame(dict, index=[1, 2, 3])
# df2 = pd.DataFrame(dict)	和上一行代码具有相同的作用
print(df2)

在这里插入图片描述
1.3 使用from_dict

dict2 = {'a': [1, 2, 3], 'b': [4, 5, 6]}
df3 = DataFrame.from_dict(dict2)
print(df3)

在这里插入图片描述
1.4 索引相同的情况下,相同索引的值会相对应,缺少的值会添加NaN

data = {
    'name': pd.Series(['A', 'B', 'C'], index=['a', 'b', 'c']),
    'score': pd.Series([90, 80, 70, 99], index=['a', 'b', 'c', 'd']),
    'height': pd.Series([1.58, 1.67, 1.66], index=['a', 'b', 'c'])
}
df4 = pd.DataFrame(data)
print(df4)

在这里插入图片描述
2.常用的属性
数据准备

dict3 = {
    'name': ['A', 'B', 'C'],
    'score': [90, 80, 70],
    'height': [1.58, 1.67, 1.66]
}
df5 = pd.DataFrame(data=dict3)
print(df5)

在这里插入图片描述

# 获取行数和列数
print(df5.shape)        # (3, 3)
# 获取行索引
print(df5.index)        # RangeIndex(start=0, stop=3, step=1)
print(df5.index.tolist())       # [0, 1, 2]
# 获取列索引
print(df5.columns.tolist())     # ['name', 'score', 'height']
# 获取数据的类型
print(df5.dtypes)

在这里插入图片描述

# 获取数据的维度
print(df5.ndim)     # 2
# value属性也会以二维ndarray的形式返回DataFrame的数据
print(df5.values)

在这里插入图片描述

# 展示df5的概览
print(df5.info())

在这里插入图片描述

# 显示头几行,默认显示5行
print(df5.head(2))

在这里插入图片描述

# 显示后几行
print(df5.tail(1))

在这里插入图片描述

# 获取dataframe的列
# 获取一列,返回的是series类型
print(df5['name'])

# 获取多列,返回的是dataframe类型
print(df5[['name', 'score']])
# 获取一行
print(df5[0:1])

在这里插入图片描述

# 获取多行
print(df5[1:3])

在这里插入图片描述

# 获取多行里的某一列
print(df5[1:3]['name'])

在这里插入图片描述

# 获取多行多列
print(df5[1:3][['name', 'score']])

在这里插入图片描述

df.loc 通过标签索引获取数据
de.iloc 通过位置获取数据

数据准备
dict4 = {
    'name': ['A', 'B', 'C'],
    'score': [90, 80, 70],
    'height': [1.58, 1.67, 1.66]
}
df6 = pd.DataFrame(data=dict4, index=['1', '2', '3'])
print(df6)

在这里插入图片描述
和numpy类似(一起记) [行, 列]

# 取一行
print(df6.loc['1'])

# 获取某一行某一列的数据
print(df6.loc['1', 'name'])

# 一行所有列
print(df6.loc['1', :])

# 某一行多列的数据
print(df6.loc['1', ['name', 'score']])

# 选择间隔的多行多列
print(df6.loc[['1', '3'], ['name', 'height']])

# 选择连续的多行和间隔的列
print(df6.loc['1':'3', ['name', 'height']])

# 取一行
print(df6.iloc[0])

# 取连续多行
print(df6.iloc[0:2])

# 取间断的多行
print(df6.iloc[[0,2], :])

# 取某一列
print(df6.iloc[:, 1])

# 某一个值
print(df6.iloc[0, 0])

3.DataFrame修改index、columns

数据准备
df8 = pd.DataFrame(np.arange(9).reshape(3, 3), index=['gx', 'cd', 'hb'], columns=['a', 'b', 'c'])
print(df8)

在这里插入图片描述

# 直接修改df8的index (在原来的df上直接改)
# print(df8.index)  可以打印出 df8.index,说明也可以为其赋值
df8.index = ['guangxi', 'chengdu', 'hubei']
print(df8)

在这里插入图片描述

# 自定义map函数(x是原有的行列值)(不修改原来的df)
def map(x):
    return x+'_pandas'
print(df8.rename(index=map, columns=map))

在这里插入图片描述

# rename传入某个字典,为某个index单独修改名称
df9 = df8.rename(index={'guangxi': 'GX'}, columns={'a': 'AA'})
print(df9)

在这里插入图片描述

# 将指定列转化为索引
# 将索引为'a'的列替换原来的行索引
df10 = df8.set_index('a', drop=False)
print(df10)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值