Pandas笔记1

##pandas笔记1

#系列(Series)
#一维
#均匀数据,尺寸大小不变,数据的值可变

#数据帧(DataFrame)
#二维
#异构数据,大小可变,数据可变

#面板(Panel)
#三维
#异构数据,大小可变,数据可变

#这些数据结构构建在Numpy数组之上

import pandas as pd

import numpy as np

#创建一个默认的整数索引
s = pd.Series([1,3,5,np.nan,6,8])

print(s)

#输出
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64

#通过传递numpy数组,使用datetime索引和标记列来创建DataFrame
dates = pd.date_range(‘20170101’, periods=7)
print(dates)

pandas.DataFrame( data, index, columns, dtype, copy)
#data:数据采取各种形式,如:ndarray,series,map,lists,dict,constant和另一个DataFrame
#index:对于行标签,要用于结果帧的索引是可选缺省值np.arrange(n),如果没有传递索引值
#columns:对于列标签,可选的默认语法是 - np.arange(n)。 这只有在没有索引传递的情况下才是这样
#dtype:每列的数据类型

#列删除
del df[‘one’]
df.pop(‘two’)

#增加行
df = df.append(df2)
#删除行

df = df.drop(0)

print("–"*16)
df = pd.DataFrame(np.random.randn(7,4), index=dates, columns=list(‘ABCD’))
print(df)
输出
DatetimeIndex([‘2017-01-01’, ‘2017-01-02’, ‘2017-01-03’, ‘2017-01-04’,‘2017-01-05’, ‘2017-01-06’, ‘2017-01-07’],dtype=‘datetime64[ns]’, freq=‘D’)

               A         B         C         D

2017-01-01 -0.732038 0.329773 -0.156383 0.270800
2017-01-02 0.750144 0.722037 -0.849848 -1.105319
2017-01-03 -0.786664 -0.204211 1.246395 0.292975
2017-01-04 -1.108991 2.228375 0.079700 -1.738507
2017-01-05 0.348526 -0.960212 0.190978 -2.223966
2017-01-06 -0.579689 -1.355910 0.095982 1.233833
2017-01-07 1.086872 0.664982 0.377787 1.012772

#通过传递可以转换为类似系列的对象的字典来创建DataFrame
df2 = pd.DataFrame({ ‘A’ : 1.,
‘B’ : pd.Timestamp(‘20170102’),
‘C’ : pd.Series(1,index=list(range(4)),dtype=‘float32’),
‘D’ : np.array([3] * 4,dtype=‘int32’),
‘E’ : pd.Categorical([“test”,“train”,“test”,“train”]),
‘F’ : ‘foo’ })

print(df2)

#输出
A B C D E F
0 1.0 2017-01-02 1.0 3 test foo
1 1.0 2017-01-02 1.0 3 train foo
2 1.0 2017-01-02 1.0 3 test foo
3 1.0 2017-01-02 1.0 3 train foo

#查看框架的顶部和底部的数据行
df.head()
df.tail()

#显示索引,列和底层numpy数据

df.index
df.columns
df.values

#显示描述数据的快速统计摘要

df.describe()

#按轴排序
df.sort_index(axis=1, ascending=False)

#按值排序
df.sort_values(by=‘B’)

#选择一列
df[‘A’]

#选择切片行
df[0:3]
df[‘20170102’:‘20170103’]

#使用标签获取横截面
df.loc[dates[0]]

#通过标签选择多轴

df.loc[:,[‘A’,‘B’]]

#标签切片
df.loc[‘20170102’:‘20170104’,[‘A’,‘B’]]

#获得标量值
df.loc[dates[0],‘A’]

#通过传递的整数的位置选择
df.iloc[3]

#通过整数切片
df.iloc[3:5,0:2]

#通过整数位置的列表
df.iloc[[1,2,4],[0,2]]

#明确获取值
df.iloc[1,1]

#使用单列的值来选择数据
df[df.A > 0]

#从满足布尔条件的DataFrame中选择值
df[df > 0]

#输出
A B C D
2017-01-01 NaN 1.963213 0.643244 0.945643
2017-01-02 0.364237 0.917368 NaN NaN
2017-01-03 0.702624 NaN 0.088565 NaN
2017-01-04 1.274313 NaN 2.313910 NaN
2017-01-05 2.586315 0.588273 NaN 1.482597
2017-01-06 NaN 0.405928 0.309201 NaN
#负值被转换成了NaN

#使用isin()方法进行过滤
dates = pd.date_range(‘20170101’, periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list(‘ABCD’))

df2 = df.copy()
df2[‘E’] = [‘one’, ‘one’,‘two’,‘three’,‘four’,‘three’]

print(df2)

print("============= start to filter =============== ")

print(df2[df2[‘E’].isin([‘two’,‘four’])])

#输出
A B C D E
2017-01-01 0.723399 -0.369247 0.863941 -1.910875 one
2017-01-02 -0.047573 -0.609780 2.130650 -0.019281 one
2017-01-03 -0.566122 -0.850374 -0.031516 0.362023 two
2017-01-04 0.903819 -0.513673 0.118850 -0.351811 three
2017-01-05 -0.485232 -0.864457 1.396835 -1.696083 four
2017-01-06 0.272145 -0.644449 -1.319063 -0.201354 three
============= start to filter ===============
A B C D E
2017-01-03 -0.566122 -0.850374 -0.031516 0.362023 two
2017-01-05 -0.485232 -0.864457 1.396835 -1.696083 four

#函数应用
#并不是所有的函数都可以向量化(也不是返回另一个数组的NumPy数组,也不是任何值),
#在DataFrame上的方法applymap()和类似于在Series上的map()接受任何Python函数,并且返回单个值

df = pd.DataFrame(np.random.randn(5,3),columns=[‘col1’,‘col2’,‘col3’])

#My custom function
df[‘col1’].map(lambda x:x*100)
print(df)

#输出
col1 col2 col3
0 0.629348 0.088467 -1.790702
1 -0.592595 0.184113 -1.524998
2 -0.419298 0.262369 -0.178849
3 -1.036930 1.103169 0.941882
4 -0.573333 -0.031056 0.315590

df = pd.DataFrame(np.random.randn(5,3),columns=[‘col1’,‘col2’,‘col3’])
df.applymap(lambda x:x*100)
print(df)

#输出
col1 col2 col3
0 17.670426 21.969052 -49.064031
1 22.237846 42.216693 195.392124
2 24.109576 -86.457646 69.643171
3 35.576312 -162.332803 -81.743023
4 30.874333 71.476717 13.028751

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值