Python数据分析自学笔记代码

import pandas as pd
import numpy as np
#用于绘图
import matplotlib.pyplot as plt
# 用于深拷贝
import copy
plt.rcParams['font.sans-serif']=['SimHei'] #图像显示中文

df = pd.read_excel("D:\data analysis\day1\day1\pandas操作excel\pandas操作excel\示例数据.xlsx")
print(df.head())
print(df.shape)
print(df.shape[0])  # 行
print(df.shape[1])  # 列

print(df.columns)  # 查看列名(表头)Index(['Unnamed: 0', '创建时间', '地址', '岗位', '学历', '技能要求', '工作经验', '薪资水平'], dtype='object')
# 多出了unnamed 这一列干扰项需要删除,然后需要更新整个df数据

print(df)
df.drop('Unnamed: 0', axis=1, inplace=True)
# 第一个参数需要(列或行名)表头的名字
# axis = 0 表示行, 1 表示列
# inplace表示替换原来的df,如果没有这一行原数据更改失败,True 记得大写T
print(df)

# 缺失值 FALSE为0(表示不缺失) TRUE为1(缺失)
print(df.isnull())

# 可以通过求和来判断
print(df.isnull().sum())
# 全部为0就是没有缺失值

# 数据进行深拷贝,这样拷贝的不是引用,修改df1时才不会一并把df一起修改
# 深拷贝和浅拷贝的选择取决于你的需求。如果你需要独立的副本,不受原始对象的更改影响,
# 那么应该使用深拷贝。而如果你只是希望创建一个新的对象,与原始对象共享一些内部引用,那么可以使用浅拷贝。
df1 = copy.deepcopy(df)
# 数据的盲目去重会导致大量的数据丢失!!!
df1.drop_duplicates(inplace=True)
print(df1)

# 数据筛选 整数 小数适用
print(df[df['薪资水平'] > 8000])

# 数据打标签 10000一下为低 10000以上为高 max为最大值
bins = [0, 10000, max(df['薪资水平'])]
# 定义标签名
group_name = ['low', 'high']
# 打标签
# 当前的列存在直接取值, 不存在则新建一个列
# pd.cut 表示插入数据
df['new_column'] = pd.cut(df['薪资水平'], bins, labels=group_name)
print(df)

# 删除数据
del df['new_column']
print(df)

# 最前面的一列叫做索引
df2 = copy.deepcopy(df)
# 有两种模式一个是按照index 一个是按照value ascening 表示升序
print(df2.sort_values('薪资水平', ascending=True))

# 一般情况下存在正常缺失(填表会有不填的地方)删除缺失值只能一行行的删,因此有缺失值的填充
# 使用前一个值填充缺失值,(方法有很多,可以去查)
df1 = df1.fillna(axis=0, method='ffill')

#数据格式
print(df.info())

#字符串->时间格式 视频中用了format反而匹配失败,不加就成功了,chatgpt得知
df['创建时间'] = pd.to_datetime(df['创建时间'])
print(df.info())

#时间有选择显示
df3 = copy.deepcopy(df)
#这样就显示年月日,时分秒不显示
df3['创建时间']=df['创建时间'].dt.strftime('%Y-%m-%d')
print(df3)

#合并两个列
df['合并列']=df['地址']+df['岗位']
print(df)

#str 表示用字符串操作,split表示分隔,','用逗号分割,expand是为了让补全缺失值让数据格式更加好看直观
print(df['技能要求'].str.split(',',expand=True))
#print(df['技能要求'])

#学历的对应平均薪资 -> 分组
#多个数值类型的列,比如说有小数、整数类型等,后面要特定好需要的分组,如['薪资水平']
#mean求均值
print(df.groupby('学历')['薪资水平'].mean())

#取特定的行,例如学历等于大专
print(df[df['学历']=='大专'])

#数据透视表(因为表中数据不全会有些出入)
'''
pivot_table()是 Pandas 中用于创建数据透视表的函数。它允许你根据一个或多个列对数据进行汇总,并对结果进行聚合计算。

以下是pivot_table()函数的基本语法:

pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True)
参数说明:

data: 要进行汇总的原始数据框(DataFrame)。
values: 需要进行聚合计算的列名,可以指定多个列。
index: 用作行索引的列名或多个列名,数据将按照这些列的值进行分组。
columns: 用作列索引的列名或多个列名,数据将按照这些列的值进行分组。
aggfunc: 聚合函数的名称或函数,用于计算聚合值,默认为'mean'(均值)。
fill_value: 用于填充缺失值的值。
margins: 是否显示行和列的汇总统计,默认为False。
dropna: 是否删除包含缺失值的行,默认为True。
下面是一个示例,展示如何使用pivot_table()函数创建一个简单的数据透视表:

python
import pandas as pd

# 创建一个示例数据框
data = pd.DataFrame({
   '城市': ['北京', '北京', '上海', '上海', '广州', '广州'],
   '月份': ['一月', '二月', '一月', '二月', '一月', '二月'],
   '销售额': [100, 200, 150, 250, 180, 220]
})

# 创建数据透视表
pivot = pd.pivot_table(data, values='销售额', index='城市', columns='月份', aggfunc='sum')

print(pivot)
输出结果如下:

月份  一月   二月
城市
上海  150  250
北京  100  200
广州  180  220
在上述示例中,我们根据"城市"列和"月份"列对"销售额"列进行汇总和聚合计算。
pd.pivot_table()函数将原始数据框data作为参数,并指定需要聚合的列名values='销售额',
行索引index='城市',列索引columns='月份'以及聚合函数aggfunc='sum'(求和)。
'''
print(pd.pivot_table(df,index=['地址','学历'],values=['薪资水平']))

#统计指标
print(df['薪资水平'].describe())

#直方图 figsize可以自己调大写,可不加
df['薪资水平'].hist(figsize=(18,6))
# 添加标题和标签
plt.title('数值分布直方图')
plt.xlabel('数值')
plt.ylabel('频数')
# 显示图形
plt.show()


​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值