数据分析 pandas and matplotlib详细学习(3)———— 数据处理(2022.7.16)

        今天的心情额外糟糕,早上起来头痛无比,走路都摇摇晃晃的,都不知道是怎么回事,就多睡了一会,起来后好了一点,但还是很晕,不过在晕,也挡不住我写笔记的心,我相信坚持写,总会有突破的一天的。加油呀!


一、数据处理

  1.1.数据的整体情况查看

        在数据中,从小学开始,我们就知道有平均数,中位数等,这些都是数据重要的特征,而在DataFrame中,使用describe就可以获取信息,实例如下:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(1,10).reshape(3,3))

df.index = ['r1','r2','r3']

df.columns = ['c1','c2','c3']

print(df)
print(df.describe())

out:

    c1  c2  c3
r1   1   2   3
r2   4   5   6
r3   7   8   9
        c1   c2   c3
count  3.0  3.0  3.0
mean   4.0  5.0  6.0
std    3.0  3.0  3.0
min    1.0  2.0  3.0
25%    2.5  3.5  4.5
50%    4.0  5.0  6.0
75%    5.5  6.5  7.5
max    7.0  8.0  9.0

        通过value_counts就可以快速查看某一列有几种数据。实例如下:

print(df['c1'].value_counts())

out:

1    1
4    1
7    1
Name: c1, dtype: int64

我们可以看到c1列共有3种数据,每种数据的频率为1

1.2 数据的运算,排序,和删除

           在已有的列中,两列可以相减,或相加,得到一个新列,实例如下:

df['c4'] = df['c1']+df['c2']
print(df)

out:

   c1  c2  c3  c4
r1   1   2   3   3
r2   4   5   6   9
r3   7   8   9  15

其次我们还可以对每列按大小排列,实例如下:

a = df.sort_values(by = 'c2',ascending = False)
print(a)

out:

    c1  c2  c3  c4
r3   7   8   9  15
r2   4   5   6   9
r1   1   2   3   3

其中

by 是指定用那一列来排序,ascending默认为True 表示按升序排列,False 是按降序排列。

当然我们也可以用sort_index对索引进行排列,实例如下:

a = a.sort_index(ascending = False)
print(a)

out:

    c1  c2  c3  c4
r3   7   8   9  15
r2   4   5   6   9
r1   1   2   3   3

最后就是数据的删除

实例如下:

df.drop(index = ['r3'],columns = ['c1'],inplace=True)
print(df)

   out:

  c2  c3  c4
r1   2   3   3
r2   5   6   9

其中index 是指定要删除的行,columns是要删除的列,inplace = True 时是在原表中进行修改,否则是返回一个新的DataFrame。

1.3.数据表拼接

pandas库还提供一系列高级功能,为表的拼接和重塑提供了极大的便利,主要涉及了merge()

,concat,append.等函数,实例如下:

merage:

import pandas as pd
df_1 = pd.DataFrame({'姓名':['小红','小明','小亮'],'成绩':[89,90,85]})
df_2 = pd.DataFrame({'姓名':['小红','小东','小亮'],'科目':['语文','英语','数学'],'排名':[2,1,3]})
print(df_1)
print(df_2)

# merage
df_3 = pd.merge(df_1,df_2)
print('merge:\n',df_3)

out:

   姓名  成绩
0  小红  89
1  小明  90
2  小亮  85
   姓名  科目  排名
0  小红  语文   2
1  小东  英语   1
2  小亮  数学   3
merge:
    姓名  成绩  科目  排名
0  小红  89  语文   2
1  小亮  85  数学   3

可以看到merge可以根据相同的列,将两表进行合并,当然相同的列不可能只有一个,这时我们可以加入on = 列名 这个参数来指定列。默认的合并其实是取交集inner,当然我们也可以取并集outer实例如下:

df_4 = pd.merge(df_1,df_2,how = 'outer')
print(df_4)

out:

   姓名    成绩   科目   排名
0  小红  89.0   语文  2.0
1  小明  90.0  NaN  NaN
2  小亮  85.0   数学  3.0
3  小东   NaN   英语  1.0

我们可以看到数据被完整打印

如果想要保留左表,而对于右表数据不在意可以使how = ''left

cancat:

        他是一种全连接方式,不用对齐,即不需要两个表有相同的列,强行进行合并。实例如下:

df_5 = pd.concat([df_1,df_2],axis = 0)
df_6 = pd.concat([df_1,df_2],axis = 0,ignore_index = True)
print(df_5)
print(df_6)

out:

   姓名    成绩   科目   排名
0  小红  89.0  NaN  NaN
1  小明  90.0  NaN  NaN
2  小亮  85.0  NaN  NaN
0  小红   NaN   语文  2.0
1  小东   NaN   英语  1.0
2  小亮   NaN   数学  3.0
   姓名    成绩   科目   排名
0  小红  89.0  NaN  NaN
1  小明  90.0  NaN  NaN
2  小亮  85.0  NaN  NaN
3  小红   NaN   语文  2.0
4  小东   NaN   英语  1.0
5  小亮   NaN   数学  3.0

其中默认axis = 0,及纵向连接axis = 1横向连接。df3的索引为原来两个表各自的索引,若想要重置索引,就可以使用ignore_index = True。

append 函数

append 可以看成concat的简化版,效果和 df5 类似实例如下:

df_7 = df_1.append(df_2)
print(df_7)

对于append来说,我们一般都是在列表中使用,但在DataFrame里面也可以用来添加数据,实例如下:

df_8 = df_1.append({'姓名':'小san','成绩':90,'科目':'地理','排名':8},ignore_index=True)
print(df_8)

out:

     姓名  成绩   排名   科目
0    小红  89  NaN  NaN
1    小明  90  NaN  NaN
2    小亮  85  NaN  NaN
3  小san  90  8.0   地理

总结:

pandas中除了数据的处理和数据表的拼接函数以外,还有比较多函数,像groupby等还没实现,但已经学习了基本的知识,其他函数将直接在后面案例中使用和介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

之学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值