30 个 Python 技巧,加速你的数据分析处理速度

今天给大家分享的是我日常在做数据处理中总结的一些 Python 技巧

文章目录

*
交流+完整代码
pandas的下载
创建DataFrame数据
读取本地文件
查看数据是否有缺失
统计缺失值个数
缺失值填充
缺失值删除
查看头尾文件
取单列值
取多列值
单条件取值
多条件取值-与
多条件取值-或
字符串的开始函数
字符串的结尾函数
字符串的包含函数‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
统计元素个数
分割字符串
清理数据
划分区间
重置索引
column重命名
分组统计groupby-单条件
分组统计groupby-多条件
求平均
apply函数
求最大最小值
时间提取
增加列

交流+完整代码

本文来自技术群小伙伴分享的,技术交流欢迎入群

目前开通了技术交流群,群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,方便找到更快获取完整资料、入群

方式①、添加微信号:dkl88191,备注:来自CSDN+ 资料
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

pandas的下载

使用命令下载:

pip install pandas

30 个 Python 技巧,加速你的数据分析处理速度

或者自行下载whl文件安装

https://www.lfd.uci.edu/~gohlke/pythonlibs/

30 个 Python 技巧,加速你的数据分析处理速度

创建DataFrame数据

pd_data = pd.DataFrame({
    "name":["小明","小红","小孙","王小","关宇","刘蓓","张菲"],
    "age":[20,18,27,20,28,18,25],
    "sex":["男","女","男","男","男","女","女"],
    "score":[669,570,642,590,601,619,701],
    "address":["北京","深圳","广州","武汉","深圳","广州","长沙"]
})

print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

读取本地文件

pd_data = pd.read_excel('./测试.xlsx')

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.expand_frame_repr', False)

print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

查看数据是否有缺失


isnull = pd_data.isnull()
print(isnull)

30 个 Python 技巧,加速你的数据分析处理速度

统计缺失值个数


null_count = pd_data.isnull().sum()
print(null_count)

30 个 Python 技巧,加速你的数据分析处理速度

缺失值填充


pd_data.fillna(8.888, inplace=True)
print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

缺失值删除


exist_col = pd_data.dropna()
print(exist_col)

30 个 Python 技巧,加速你的数据分析处理速度

查看头尾文件


print('头文件:', pd_data.head())
print('尾文件:', pd_data.tail())

30 个 Python 技巧,加速你的数据分析处理速度

取单列值


pd_data = pd.read_excel('./测试.xlsx')
print(pd_data['全款价'])

30 个 Python 技巧,加速你的数据分析处理速度

取多列值


pd_data = pd.read_excel('./测试.xlsx')
print(pd_data[['车辆概况', '全款价']])

30 个 Python 技巧,加速你的数据分析处理速度

单条件取值

pd_data = pd.read_excel('./测试.xlsx')
print(pd_data[pd_data['全款价'] == 4])
print('-'*100)
print(pd_data[pd_data['汽车排量'] == '2.0T'])

30 个 Python 技巧,加速你的数据分析处理速度

多条件取值-与


print(pd_data[(pd_data['车龄'] == '2018年') & (pd_data['变速箱'] == '自动')])

30 个 Python 技巧,加速你的数据分析处理速度

多条件取值-或


print(pd_data[(pd_data['车龄'] == '2018年') | (pd_data['变速箱'] == '自动')])

30 个 Python 技巧,加速你的数据分析处理速度

字符串的开始函数


cars = pd_data[pd_data['车辆概况'].str.startswith('大众')]
print(cars)

30 个 Python 技巧,加速你的数据分析处理速度

字符串的结尾函数


cars = pd_data[pd_data['车辆概况'].str.endswith('豪华型')]
print(cars)

30 个 Python 技巧,加速你的数据分析处理速度

字符串的包含函数‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


cars = pd_data[pd_data['车辆概况'].str.contains('进口')]
print(cars)

30 个 Python 技巧,加速你的数据分析处理速度

统计元素个数


trans_count = pd_data['过户情况'].value_counts()
print(trans_count)

30 个 Python 技巧,加速你的数据分析处理速度

为了便于进一步的数据分析,我希望将它们置于不同的数组之中,可以采用如下方法:


trans_count = pd_data['过户情况'].value_counts()

x1_data = trans_count.index.tolist()

x2_data = trans_count.tolist()

print(x1_data)
print(x2_data)

30 个 Python 技巧,加速你的数据分析处理速度

这种格式的数据才是最适合做可视化分析的!

这里再多介绍两种方法,条条大路通罗马

都能轻松实现你的目标。


trans_count = pd_data['过户情况'].value_counts()

x1_data = trans_count.index.tolist()
x11_data = trans_count.index
x12_data = trans_count.index.values

x2_data = trans_count.tolist()
print('index.tolist():', x1_data)
print('index:', x11_data)
print('index.values:', x12_data)
print('x2:', x2_data)

30 个 Python 技巧,加速你的数据分析处理速度

分割字符串

这个功能也很实用,大家可以看看我的汽车名称数据这一列,我的目标仅仅是车名而已,后面的车型、车龄、排列、变速箱信息对我来说都是冗余信息。

非常不利于我后续数据可视化

所以字符串分割在这里就显得尤为重要。

30 个 Python 技巧,加速你的数据分析处理速度

pd_data['汽车名称'] = pd_data['车辆概况'].map(lambda x: x.split(" ")[0])
name = pd_data['汽车名称'].value_counts()

name1 = name.index.tolist()

name2 = name.tolist()
print(name1)
print(name2)

30 个 Python 技巧,加速你的数据分析处理速度

看到我取出来数据的样子了吗,要的就是这个!

清理数据

当我们相对汽车里程做进一步的分析时会发现数据后面都有一个’万公里’,这种数据要做可视化必须先对数据进行处理,

就是先要去除数字后面的字符

30 个 Python 技巧,加速你的数据分析处理速度

我们可以使用字符串的replace()方法,使用空格替换字符

pd_data.loc[:, '表显里程new'] = pd_data['表显里程'].str.replace('万公里', '').astype('float32')

pd_data.to_excel('测试1.xlsx')

黄色一列是我们处理之前的数据

绿色一列是我们处理之后的数据

已经达到了我们想要的效果

30 个 Python 技巧,加速你的数据分析处理速度

划分区间

现在有这么一个需求,我想要按照汽车的行驶里程分类,基本上每个车的行驶里程都是不一样的,如果将每个数据都反映在图标上就会看起来很冗余,

也就失去了作图的意义

所以我们可以按照区间来划分,例如5w-10w公里、10w-15w公里这样图表展示展示出来的效果就会很好了。

30 个 Python 技巧,加速你的数据分析处理速度
pd_data.loc[:, '表显里程new'] = pd_data['表显里程'].str.replace('万公里', '').astype('float32')

pd_data['里程区间'] = pd.cut(pd_data['表显里程new'], [0, 2, 4, 6, 8, 10, 20],
                             labels=['0-2', '2-4', '4-6', '6-8', '8-10', '>10'])
mile = pd_data['里程区间'].value_counts()
mile1 = mile.index.tolist()
mile2 = mile.tolist()
print(mile1)
print(mile2)

30 个 Python 技巧,加速你的数据分析处理速度

重置索引

其实我们在上面案例的演示中已经发现了,根据条件取出来的数据的索引都是处理数据之前的索引,

我们现在要重置索引的话要怎么办呢?

我们可是使用_reset_index()_来索引重置

重置索引前:


cars = pd_data[pd_data['过户情况'].str.contains('0次')]
print(cars.reset_index())

30 个 Python 技巧,加速你的数据分析处理速度

重置索引后:

30 个 Python 技巧,加速你的数据分析处理速度

很好,但是不完美。多了一列colm name叫做 index的先前序列号。

不想看到它,有办法吗?

drop = True


cars = pd_data[pd_data['过户情况'].str.contains('0次')]
print(cars.reset_index(drop=True))

30 个 Python 技巧,加速你的数据分析处理速度

column重命名


pd_data = pd_data.rename(columns = {'车辆概况':'车辆详情'})
print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

分组统计groupby-单条件


pd_data.loc[:, '表显里程new'] = pd_data['表显里程'].str.replace('万公里', '').astype('float32')
trans_mile = pd_data.groupby('变速箱')['表显里程new'].sum()
print(trans_mile)

30 个 Python 技巧,加速你的数据分析处理速度

分组统计groupby-多条件


pd_data.loc[:, '表显里程new'] = pd_data['表显里程'].str.replace('万公里', '').astype('float32')
trans_mile = pd_data.groupby(['变速箱','过户情况'])['表显里程new'].sum()
print(trans_mile)

30 个 Python 技巧,加速你的数据分析处理速度

如果再加上一个重置索引 trans_mile.reset_index()

30 个 Python 技巧,加速你的数据分析处理速度

求平均


pd_data.loc[:, '表显里程new'] = pd_data['表显里程'].str.replace('万公里', '').astype('float32')
trans_mile = pd_data.groupby('过户情况')['表显里程new'].mean()
print(trans_mile.reset_index())

30 个 Python 技巧,加速你的数据分析处理速度

apply函数

还记得我们爬取大学的那个教程吗?

我们爬出来的数据如果是985或者是211显示为1,

如果非985或者211,显示为2

30 个 Python 技巧,加速你的数据分析处理速度

现在我不想要1和2了,因为我看不懂它是什么意思?如果是985或者211,就显示是,如果不是,就显示否!

pd_data = pd.read_excel('./全国高校数据.xlsx')
print(pd_data)
pd_data1 = pd_data.copy()
pd_data['f985'] = pd_data['f985'].apply(lambda x: '是' if x == 1 else '否')
pd_data['f211'] = pd_data['f985'].apply(lambda x: '是' if x == 1 else '否')
print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

同理利用_lambda_函数我们还可以

给省份这一列后面加个’

pd_data = pd.read_excel('./全国高校数据.xlsx')
print(pd_data)
pd_data1 = pd_data.copy()

pd_data['province_name'] = pd_data['province_name'].apply(lambda x: x+'省')
print(pd_data)
'''

30 个 Python 技巧,加速你的数据分析处理速度

同理利用_lambda_函数我们还可以给

人气值view_total这一列最后面的’ w

pd_data['view_total'] = pd_data['view_total'].apply(lambda x: x[:-1])
print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

求最大最小值

max_view_total = pd_data[pd_data['view_total'] == pd_data['view_total'].max()]
print(max_view_total)

30 个 Python 技巧,加速你的数据分析处理速度
min_view_total = pd_data[pd_data['view_total'] == pd_data['view_total'].min()]
print(min_view_total)

30 个 Python 技巧,加速你的数据分析处理速度

时间提取

为了便于演示,我加上了一列 Date 选项,如下:

30 个 Python 技巧,加速你的数据分析处理速度

现在我们想提取其中的年份或者月份,我们可以使用 ‘ DatetimeIndex‘这个方法来实现。

pd_data = pd.read_excel('./全国高校数据.xlsx')
pd_data['year'] = pd.DatetimeIndex(pd_data['Date']).year
pd_data['month'] = pd.DatetimeIndex(pd_data['Date']).month
pd_data['day'] = pd.DatetimeIndex(pd_data['Date']).day
print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

增加列

我想把刚才的生成的年+月+日方法到前三列,可以使用insert()方法来实现

Year = pd.DatetimeIndex(pd_data['Date']).year
Month = pd.DatetimeIndex(pd_data['Date']).month
day = pd.DatetimeIndex(pd_data['Date']).day
pd_data.insert(0, 'Year', Year)
pd_data.insert(1, 'Month', Month)
pd_data.insert(2, 'day', day)
print(pd_data)

30 个 Python 技巧,加速你的数据分析处理速度

Original: https://blog.csdn.net/weixin_38037405/article/details/127344195
Author: Love Python数据挖掘
Title: 30 个 Python 技巧,加速你的数据分析处理速度

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/674214/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球