pandas 100题

news/2024/7/3 15:33:32

文章目录

  • 1.将下面字典创建为DataFrame
  • 2.提取含有字符串“python”的行
  • 3.输出df所有列名
  • 4.修改第列名
  • 5.统计grame列中每种编程语言出现的次数
  • 6 将空值用上下值的平均值填充
  • 7 列值大于3的数
  • 8 去重列
  • 9 计算列平均值
  • 10 将列转换列表
  • 11 保存到excel
  • 12 查询行列
  • 13 列值大于3小月7的值
  • 14 交换两列位置
  • 15 列值最大所在行
  • 16 查最后5行数据
  • 17 删最后一行数据
  • 18 增加最后一行数据
  • 19 排序
  • 20 统计列的长度
  • 21 读取Excel文件,csv文件
  • 22 查看df前5行
  • 24 分组并计算平均值
  • 26 createtime提取为月-日
  • 27 查看数值型列的统计
  • 28 根据id将数据分为三组
  • 29 按降序排列
  • 30 取第30行数据
  • 31 取中位数
  • 32 水平频率分布直方图
  • 33 水平密度曲线
  • 34 删列:
  • 35 合并为新的一列
  • 37.计算最大值与最小值之差
  • 38.将第一行与最后一行拼接
  • 39.将第8行数据添加至末尾
  • 40.查看每列的数据类型


import pandas as pd
import numpy as np

1.将下面字典创建为DataFrame

data = {'grame':['python','java','c',np.nan,'python'],
'score':['22','33','66','00','66']}
df = pd.DataFrame(data)
print(df)

2.提取含有字符串“python”的行

print(df[df['grame']=='python'])

3.输出df所有列名

print(df.columns)

4.修改第列名

#inplace参数的理解:
#修改一个对象时:
#inplace=True:不创建新的对象,直接对原始对象进行修改;
#inplace=False:对数据进行修改,创建并返回新的对象承载其修改结
colNameDict = {
    'grame':'内容',
    'score':'分数'
}
df.rename(columns=colNameDict,inplace=True)
print(df)

5.统计grame列中每种编程语言出现的次数

df['内容'].value_counts()

DataFramedata_dict={"Grammer":["Python","C","Java","GO",np.nan,"SQL","PHP","python"],
"Score":[1,2,np.nan,4,5,6,7,10]}
df = pd.DataFrame(DataFramedata_dict)

6 将空值用上下值的平均值填充

df['Score']= df['Score'].fillna(df['Score'].interpolate())

7 列值大于3的数

print(df[df['Score']>3])

8 去重列

df = df.drop_duplicates(['Grammer'])
print(df)

9 计算列平均值

print(df['Score'].mean())

10 将列转换列表

print(df['Grammer'].to_list())

11 保存到excel

print(df.to_excel(r'test.xlsx'))

12 查询行列

print(df.shape)

13 列值大于3小月7的值

print(df[(df['Score']>3)&(df['Score']<7)])

14 交换两列位置

#法一
df[['Grammer', 'Score']] = df[['Score', 'Grammer']]
print(df)
#法二
col = df.columns[[1,0]]
print(df[col])

15 列值最大所在行

print(df[df['Score']==df['Score'].max()])

16 查最后5行数据

print(df.tail())

17 删最后一行数据

df.drop(len(df)-1,inplace=True)
print(df)

18 增加最后一行数据

DataFramedata_dict2 ={'Grammer':['php'],'Score':[9]}
df2 = pd.DataFrame(DataFramedata_dict2)
#新版 append被concat取代
#df.append(df2,ignore_index=True)
pd.concat([df, df2])
print(df)

19 排序

df.sort_values('Score',inplace=True)
print(df)

20 统计列的长度

# 填充空值
df['Grammer']=df['Grammer'].fillna('')
# 使用map(lambda )
df['len_G'] = df['Grammer'].map(lambda x: len(x))
print(df)

21 读取Excel文件,csv文件

dfe = pd.read_excel(r'C:\Users\Administrator\Desktop\目标.xlsx',
header =0,sheet_name=1)
df = pd.read_csv(r'..\..\lh_common_org_region.csv',encoding="GBK")

22 查看df前5行

print(df.head())

24 分组并计算平均值

# 默认对数字求平均值
df.groupby('ORG_REGION_NAME').mean()
# 指定列
print(df.groupby('ORG_REGION_NAME')['id'].mean())

26 createtime提取为月-日

在这里插入图片描述

df['CREATE_DATE'].fillna('01/01/2000 00:00:00',inplace=True)
df['time']= pd.to_datetime(df['CREATE_DATE'],format='%d/%m/%Y %H:%M:%S')
df['月-日']= df['time'].dt.month.astype(int).astype(str)+
"月-"+df['time'].dt.month.astype(int).astype(str)
print(df)

27 查看数值型列的统计

print(df.describe())

28 根据id将数据分为三组

bins = [0,2000, 5000, 10000]
group_names = ['低', '中', '高']
df['categories'] = pd.cut(df['id'], bins, labels=group_names)
print(df)

29 按降序排列

print(df.sort_values(['id'],ascending=False))

30 取第30行数据

print(df.iloc[29])

31 取中位数

print(np.median(df['id']))

32 水平频率分布直方图

import pandas as pd
df = pd.read_csv(r'..\..\lh_common_org_region.csv',encoding="GBK")
import matplotlib as plt
df.ORG_ID.plot(kind="hist")

33 水平密度曲线

df.ORG_ID.plot(kind="kde")

34 删列:

del df['id']
print(df)

35 合并为新的一列

df['test'] = df['ORG_REGION_NAME']+df['ORG_ID'].astype(str)
#df['test'] = df['ORG_REGION_NAME']+df['ORG_ID'].map(str)
print(df)

37.计算最大值与最小值之差

m =df[['id']].apply(lambda x: x.max() - x.min())
print(m)

38.将第一行与最后一行拼接

print(pd.concat([df[:1], df[-1:]]))

39.将第8行数据添加至末尾

df.append(df.iloc[7])

40.查看每列的数据类型

df.dtypes

http://lihuaxi.xjx100.cn/news/236798.html

相关文章

mysql主从配置读写分离笔记

第二次回头看了&#xff0c;第一次学完后感觉都会了&#xff0c;回头再看才发现什么都想不起来了。还得查资料再学习&#xff0c;虽然很简单。还是做个笔记吧&#xff01;笔记有点糙 就是自己看的因为主要是测试主从和读写分离 所以直接 yum install -y mariadb mariadb-server…

vue---进行post和get请求

参考文档&#xff1a; https://www.jb51.net/article/125717.htm 使用axios <script src"https://unpkg.com/axios/dist/axios.min.js"></script> 基本使用方法&#xff1a; get请求&#xff1a; // Make a request for a user with a given ID axios.ge…

迅雷CEO陈磊 | 迅雷的区块链生态梦

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 迅雷正在区块链的道路上越走越远。 5月16日&#xff0c;迅雷(NASDAQ:XNET)召开区块链生态及新品发布会。会上&#xff0c;迅雷CEO陈磊提出了在迅雷…

新闻网站个人中心(查询用户的关注信息)流程分析

1.获取当前用户登录状态 2.获取参数 用户的id user_id 3.获取新闻作者的id 4.如果新闻作者id和用户id 5.返回内容给前端转载于:https://www.cnblogs.com/zxt-cn/p/9158860.html

输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和

题目描述&#xff1a; 输入字符串&#xff0c;包含数字&#xff0c;大小写字母&#xff0c;编程输出出现做多的数字的和。 思路&#xff1a; 1.创建输入对象2.输入字符串3.利用正则将字母分离出&#xff0c;剩余的每一个字符串即为待统计的每一个数字&#xff0c;存入字符串数组…

QQ爬虫-爬取QQ空间

背景&#xff1a;在一篇个人博客看到了相关的爬虫的知识&#xff0c;个人比较有兴趣&#xff0c;就花了点时间研究了一下&#xff0c;主要通过好友空间的互动(相互访问量&#xff0c;点赞&#xff0c;评论&#xff0c;以及其他互动)&#xff0c;以及好友之间聊天的活跃度&#…

JPEG 白皮书: 建立媒体区块链的标准化框架

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 虚假新闻、版权侵犯、媒体取证、隐私和安全是数字媒体面临的新挑战。JPEG已经确定, 区块链技术作为一个技术组件, 在透明和可信的媒体交易中应对这些…

db2 基础语法

一、db2 基础 基本语法 注释&#xff1a;“--”&#xff08;两个减号&#xff09; 字符串连接&#xff1a;“||” 如set msg’aaaa’||’bbbb’&#xff0c;则msg为’aaaabbbb’ 字符串的引用&#xff1a;‘’&#xff08;一定用单引号&#xff09;&#xff0c;如果需要输入单引…