Pandas入门笔记

pandas

pandas 和numpy的关系就像

字典和list的关系

s = pd.Series([-1,3,5,np.nan,9,12])

print(s)

#从20220101开始生成日期,周期是6
dates = pd.date_range('20220101',periods=6)
print(dates)

#随机生成六行四列的数据,行名称是日期,列名称是'啊','对','对','对'
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['啊','对','对','对'])
print(df)

pandas 排序

# 不指定行列的名称的时候,默认是数字
df = pd.DataFrame(np.arange(12).reshape(3,4))
print(df)

# df里面放入字典数据
df1 = pd.DataFrame({'1':2.5,
                    '2':pd.Timestamp('20220428'),
                    '3':np.array([7]*4,dtype=int),
                    '4':pd.Categorical(["hr","boss","emp","man"]),
                    '5':"default"
                    })
print(df1)
# 查看类型
print(df1.dtypes)
#查看行名
print(df1.index)
# 查看列名
print(df1.columns)
# 查看值
print(df1.values)
#describe只能运算数字
print(df1.describe())
#转置
# print(df1.T)
# df1.sort_index中文倒叙按照什么?
print(df1.sort_index(axis=1,ascending=False))
print(df1.sort_index(axis=0,ascending=False))
#按某一列的值排序
print(df1.sort_values(by='4',ascending=False))#记得要加''号

pandas选择指定数据

#生成数据,6行4列
dates = pd.date_range('20220428',periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),
                  index=dates,
                  columns=['a','b','c','d'])
print(df)
print(df.a)
print('不能说一模一样,简直就是毫无差别')
print(df['a'])

# 按照标签/索引取值
print(df.loc['20220501'])
#:代表所有行,'a'代表a这一列
print(df.loc[:,'a'])
#取具体的值
print(df.loc['20220501',['b','c']])

# 按照位置绝对位置取值
#左边代表行,右边代表列
print(df.iloc[0,1])
#筛选某一区域
print(df.iloc[1:3,1:3])
#跳着筛选
print(df.iloc[1:4,[0,3]])

#找b那一列大于12的
print(df.b>12)
#显示为true的所有行
print(df[df.c>12])


pandas改变指定位置的值

#改变某个位置的值
df.iloc[1,1] = 2
df.loc['20220501','c'] = '13a'
df.d[df.a>19] = 22
#增加新的一列
df['e'] = 'error'
print(df)

#人为产生一个空值
df.iloc[(3,2)] = np.nan
#how有两种选择'any'和'all',
# any代表有一个nan就可以删除,
# all代表都是nan才可以删除
print(df.dropna(axis=1,how='any'))
print(df.dropna(axis=0,how='any'))
print(df.fillna(value=0))
#找哪一些值是nan
print(df.isnull())
#判断是否存在nan值
print(np.any(df.isnull()) == True)
print(np.any(df.isnull()))

pandas 处理文件

# pandas 读取csv
data  =  pd.read_csv("Student.csv",sep='\t')
print(data)
data.to_pickle("student.pickle")
print(data['Name'])

pandas 合并数据

#pandas合并
#创建数据
df1 = pd.DataFrame(np.ones((3,4))*0,
                   columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,
                   columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,
                   columns=['a','b','c','d'])
# print(df1)
# print(df2)
# print(df3)
#叠俄罗斯方块
#索引不会改变
res = pd.concat([df1,df2,df3],axis=0)
#重建索引
res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)
print(res)

#pandas合并
#创建数据
df1 = pd.DataFrame(np.ones((3,4))*0,
                   columns=['a','b','c','d'],
                   index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,
                   columns=['b','c','d','e'],
                   index=[2,3,4])
df3 = pd.DataFrame(np.ones((3,4))*2,
                   columns=['c','d','e','f'],
                   index=[3,4,5])
# print(df1)
# print(df2)
# print(df3)
#join 内连接,外连接
res = pd.concat([df1,df2])
print(res)
res = pd.concat([df1,df2],join='outer')#默认是outer
print(res)
#inner 会找出相同的部分
res = pd.concat([df1,df2],join='inner',ignore_index=True)
print(res)

#数据追加
res = df1.append(df2,ignore_index=True)
print(res)
#左右合并
res = pd.concat([df1,df2,df3],axis=1)
print(res)

pandas Merge

#创建数据
left = pd.DataFrame({'key':['K0','K1','K2','K3'],
                     'A':['A0','A1','A2','A3'],
                     'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'key':['K0','K1','K2','K3'],
                     'C':['C0','C1','C2','C3'],
                     'D':['D0','D1','D2','D3']})

# 根据key合并
res = pd.merge(left,right,on='key')
print(res)


#创建数据
left = pd.DataFrame({'key1':['K0','K0','K1','K2'],
                     'key2':['K0','K1','K0','K1'],
                     'A':['A0','A1','A2','A3'],
                     'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'key1':['K0','K1','K1','K2'],
                      'key2':['K0',"K0","K0","K0"],
                     'C':['C0','C1','C2','C3'],
                     'D':['D0','D1','D2','D3']})

# 根据key合并
print(left)
print(right)
res = pd.merge(left,right,on=['key1','key2'])
print(res)

#   key1 key2   A   B
# 0   K0   K0  A0  B0
# 1   K0   K1  A1  B1
# 2   K1   K0  A2  B2
# 3   K2   K1  A3  B3
#   key1 key2   C   D
# 0   K0   K0  C0  D0
# 1   K1   K0  C1  D1
# 2   K1   K0  C2  D2
# 3   K2   K0  C3  D3
#   key1 key2   A   B   C   D
# 0   K0   K0  A0  B0  C0  D0
# 1   K1   K0  A2  B2  C1  D1
# 2   K1   K0  A2  B2  C2  D2


# 根据key合并
print(left)
print(right)
#how {'left','right','inner','outer'}
res = pd.merge(left,right,on=['key1','key2'],how='inner')
print(res)
res = pd.merge(left,right,on=['key1','key2'],how='outer')
print(res)
res = pd.merge(left,right,on=['key1','key2'],how='left')
print(res)
res = pd.merge(left,right,on=['key1','key2'],how='right')
print(res)


#indicator 能看到怎么合并的
res = pd.merge(left,right,on=['key1','key2'],how='inner',indicator=True)
print(res)
res = pd.merge(left,right,on=['key1','key2'],how='outer',indicator=True)
print(res)
res = pd.merge(left,right,on=['key1','key2'],how='left',indicator=True)
print(res)
res = pd.merge(left,right,on=['key1','key2'],how='right',indicator=True)
print(res)


#pandas合并
#创建数据
boys = pd.DataFrame({'k':['K0','K1','K2'],
                     'age':[18,20,23]})
girls = pd.DataFrame({'k':['K0','K0','K3'],
                      'age':[24,25,26]})
print(boys)
print(girls)

#同属性字段合并
res = pd.merge(boys,girls,on='k',suffixes=['_boys','_girls'],how='outer')
print(res)

pandas 画图

#Series
# data = pd.Series(np.random.randn(1000),index=np.arange(1000))
# data = data.cumsum()

#DataFrame
data = pd.DataFrame(np.random.randn(1000,4),
                 index=np.arange(1000),
                 columns=list("abcd"))
data = data.cumsum()
print(data.head())
#plot 能画什么图
# bar,hist,box,kde,area,scatter,hexbin,pie
ax = data.plot.scatter(x='a',y='b',color='blue')
data.plot.scatter(x='c',y='d',color='red',ax=ax)
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴你对Python的学习感兴趣!下面是一些关于黑马Python快速入门笔记: 1. Python简介:Python是一种高级编程语言,具有简洁、易读和可扩展的特点。它被广泛应用于数据分析、Web开发、人工智能等领域。 2. 安装Python:可以从Python官方网站下载并安装Python解释器。同时,推荐使用Anaconda发行版,它包含了很多常用的第三方库和工具。 3. 变量与数据类型:在Python中,可以使用变量来存储不同类型的数据。常见的数据类型包括整数、浮点数、字符串、列表、元组、字典等。 4. 控制流程:使用条件语句(if-else)、循环语句(for、while)和跳转语句(break、continue)控制程序的流程。 5. 函数与模块:函数是一段可重复使用的代码块,可以提高代码的复用性。模块是一个包含Python代码的文件,可以使用import语句导入模块并调用其中的函数。 6. 文件操作:Python提供了丰富的文件操作方法,可以读取和写入文本文件、二进制文件等。 7. 异常处理:通过异常处理机制可以捕获和处理程序中出现的错误,保证程序的稳定性。 8. 面向对象编程:Python是一种面向对象的编程语言,支持类、对象、继承等特性。面向对象编程可以更好地组织和管理代码。 9. 常用第三方库:Python拥有众多的第三方库,可以大大扩展其功能。一些常用的库包括NumPy(数值计算)、Pandas数据分析)、Matplotlib(数据可视化)等。 以上是关于黑马Python快速入门的一些笔记,希望对你的学习有所帮助。如果有任何问题,请随时向我提问!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值