python-pandas 数据提取 笔记

数据抽取

DataFrame对象loc属性与iloc属性

loc属性

以列名(columns)和行名(index)作为参数.当只有一个参数时,默认是行名,即抽取整行数据,包括所有列。

iloc属性

以行和列位置索引(即:0,1,2…)作为参数,0表示第一行,1表示第2行,以此类推。当只有一个参数时,默认是行索引,即抽取整行数据.包括所有列。

按行提取
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = [['张三', '李四', '王五']]
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
# 提取行数据
print(df.loc['张三'])
print('------------------------------')
print(df.iloc[0])
print('------------------------------')
# 提取多行数据
print(df.loc[['张三', '王五']])
print('------------------------------')
print(df.iloc[[0, 2]])
print('------------------------------')
# 提取连续的多行数据
print(df.loc['张三':'王五'])  # 从张三到王五
print('------------------------------')
print(df.iloc[0:2])  # 从张三到王五-不包括最后一位
print('------------------------------')
print(df.iloc[1::])  # iloc[start:stop:step]
print('------------------------------')
print(df.iloc[::2])

按列提取
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = [['张三', '李四', '王五']]
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)

# 使用列名提取
print(df[['数学', '英语']])
print('------------------------------')
print(df.loc[:, ['数学', '英语']])   # 逗号左侧行,右侧列
print('------------------------------')
print(df.iloc[:, [0, 2]])
print('------------------------------')
# 提取连续的列 从语文到最后
print(df.loc[:, '语文':])
print('------------------------------')
print(df.iloc[:, 1:])
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = [['张三', '李四', '王五']]
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
# 提取区域数据
print(df.loc['张三', '数学'])
print(type(df.loc['张三', '数学']))
print('------------------------------')
print(df.loc[['张三', '王五'], ['数学', '语文']])
print('------------------------------')
# 第0行第0列
print(df.iloc[0, 0])
print('------------------------------')
print(df.iloc[0:2, 0:2])
print('------------------------------')
# 非连续数据 第0行和第2列
print(df.iloc[[0, 2], [0, 2]])
print('------------------------------')
print(df.iloc[:, [0, 2]])

安装指定条件查询
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = [['张三', '李四', '王五']]
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print('------------------------------')
# 提取语文成绩>=60的学生信息
print(df.loc[df['语文'] >= 60])
# 提取语文数学都大于60的
print('------------------------------')
print(df.loc[(df['语文'] >= 60) & (df['数学'] >= 60)])

数据的增加、修改和删除

数据的增加

按列增加数据
按行增加数据
增加多行数据

修改数据
作改列标题

·使用DataFrame对象的columns属性直接赋值
·使用DataFrame对象的rename方法修改列标题

修改行标题

·使用DataFrame对象的index属性

修改数据

·使用DataFrame对象的loc属性和iloc属性

参数说明:

labels:表示行标签或列标签axis:
axis=0表示按行删除
axis=1表示按列删除
index :删除行,默认值为Nonecolumns:删除列,默认值为None
inplace:对原数组作出修改并返回一个新数组。默认值为False,如果值为True,那么原数组直接就将被替换

增加列数据
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = [['张三', '李四', '王五']]
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print('------------------------------')
# 直接赋值添加一个列
df['政治'] = [90, 80, 100]
print(df)
print('------------------------------')
# 使用loc属性 在最后一列增加
df.loc[:, '化学'] = [100, 30, 98]
print(df)
print('------------------------------')
# 在指定位置上插入一列
lst = [100, 99, 99]
df.insert(1, '历史', lst)
print(df)

增加行数据
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
# 增加一行
df.loc['陈六'] = [56, 67, 90]
print(df)
print('------------------------------')
# 增加多行
new_df = pd.DataFrame(
    data={'数学': [69, 67], '语文': [56, 78], '英语': [100, 99]},
    index=['张丽丽', '王一一']
)
print(new_df)
print('------------------------------')
df = df.append(new_df)
print(df)

修改列标题
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
df.columns = ['数学(上)', '语文(上)', '英语(上)']
print(df)
print('------------------------------')
# rename
df.rename(columns={'数学(上)': '数学(下)', '语文(上)': '语文(下)', '英语(上)': '英语(下)'}, inplace=True)
print(df)
print('------------------------------')
# 修改行标题
# 直接赋值
df.index = list('123')
print(df)
print('------------------------------')
# rename
df.rename({'1': "一一", '2': '二二', '3': '三三'}, inplace=True)
print(df)
print('------------------------------')

修改数据
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
# 修改一行数据
df.loc['张三'] = [100, 100, 100]
print(df)
print('------------------------------')
df.iloc[0, :] = [90, 90, 90]
print(df)
print('------------------------------')
df.loc[:, '数学'] = [100, 100, 100]
print(df)
print('------------------------------')
df.iloc[:, 0] = 90
print(df)
print('------------------------------')
# 修改某一处
df.loc['李四', '语文'] = 100
print(df)
print('------------------------------')
df.iloc[1, 1] = 80
print(df)
print('------------------------------')

数据删除
import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 68, 98]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print('------------------------------')
# 把数学这列删除
# df.drop(['数学'], axis=1, inplace=True)
# df.drop(columns='数学', inplace=True)
# df.drop(labels='数学', axis=1, inplace=True)

# 删除行
# df.drop(['张三'], axis=0, inplace=True)
# df.drop(index='张三', inplace=True)
# df.drop(labels='张三', axis=0, inplace=True)
print(df)
# 带条件的删除
# 删除数学成绩小于60的
print(df[df['数学'] < 60])
print('------------------------------')
# df.drop(df[df['数学'] < 60].index, inplace=True)
print(df[df['数学'] < 60].index[1])
# df.drop(df[df['数学'] < 60].index[1], inplace=True)
print('------------------------------')
print(df)

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lanlnan抱抱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值