简单操作

Python-层次聚类-Hierarchical clustering

>>> data = pd.Series(np.random.randn(10),index=[['a','a','a','b','b','c','c','d','d','d'],[1,2,3,1,2,1,2,3,1,2]])
>>> data
a 1 -0.168871
2 0.828841
3 0.786215
b 1 0.506081
2 -2.304898
c 1 0.864875
2 0.183091
d 3 -0.678791
1 -1.241735
2 0.778855
dtype: float64

Hierarchical与DataFrame之间的转换

>>> data.unstack()
1 2 3
a -0.168871 0.828841 0.786215
b 0.506081 -2.304898 NaN
c 0.864875 0.183091 NaN
d -1.241735 0.778855 -0.678791
>>> type(data.unstack())
<class 'pandas.core.frame.DataFrame'>

Merge,join,Concatenate

>>> df2 = pd.DataFrame({'apts':[55000,60000],'cars':[15000,12000]},index=['hangzhou','najing'])
>>> df1 = pd.DataFrame({'apts':[55000,60000],'cars':[20000,30000]},index=['shanghai','beijing'])
>>> df3 = pd.DataFrame({'apts':[55000,60000],'cars':[15000,12000]},index=['guangzhou','chongqing'])
>>> [df1,df2,df3]
[ apts cars
shanghai 55000 20000
beijing 60000 30000, apts cars
hangzhou 55000 15000
najing 60000 12000, apts cars
guangzhou 55000 15000
chongqing 60000 12000]
>>> pd.concat([df1,df2,df3])
apts cars
shanghai 55000 20000
beijing 60000 30000
hangzhou 55000 15000
najing 60000 12000
guangzhou 55000 15000
chongqing 60000 12000
frames = [df1,df2,df3]
>>> result2 = pd.concat(frames,keys=['x','y','z'])
>>> result2
apts cars
x shanghai 55000 20000
beijing 60000 30000
y hangzhou 55000 15000
najing 60000 12000
z guangzhou 55000 15000
chongqing 60000 12000

进行拼接concat

>>> df4 = pd.DataFrame({"salaries":[10000,30000,30000,20000,15000]},index=['suzhou','beijing','shanghai','guanghzou','tianjin'])
>>> result3 = pd.concat([result,df4],axis=1)
>>> result3
apts cars salaries
beijing 60000.0 30000.0 30000.0
chongqing 60000.0 12000.0 NaN
guanghzou NaN NaN 20000.0
guangzhou 55000.0 15000.0 NaN
hangzhou 55000.0 15000.0 NaN
najing 60000.0 12000.0 NaN
shanghai 55000.0 20000.0 30000.0
suzhou NaN NaN 10000.0
tianjin NaN NaN 15000.0

合并两个DataFrame,并且只是交集

>>> result3 = pd.concat([result,df4],axis=1,join='inner')
>>> result3
apts cars salaries
shanghai 55000 20000 30000
beijing 60000 30000 30000

Series和DataFrame一起Concatenate

>>> s1 = pd.Series([60,50],index=['shanghai','beijing'],name='meal')
>>> s1
shanghai 60
beijing 50
Name: meal, dtype: int64
>>> type(s1)
<class 'pandas.core.series.Series'>
>>> df1
apts cars
shanghai 55000 20000
beijing 60000 30000
>>> type(df1)
<class 'pandas.core.frame.DataFrame'>
>>> pd.concat([df1,s1],axis=1)
apts cars meal
shanghai 55000 20000 60
beijing 60000 30000 50
>>>

Series可以使用append进行行添加也可以列添加,但是concat不可以

>>> s2 = pd.Series([18000,12000],index=['apts','cars'],name='xiamen')
>>> s2
apts 18000
cars 12000
Name: xiamen, dtype: int64
>>> df1.append(s2)
apts cars
shanghai 55000 20000
beijing 60000 30000
xiamen 18000 12000
>>> pd.concat([df1,s2],axis=0)
0 apts cars
shanghai NaN 55000.0 20000.0
beijing NaN 60000.0 30000.0
apts 18000.0 NaN NaN
cars 12000.0 NaN NaN
>>> pd.concat([df1,s2],axis=1)
apts cars xiamen
apts NaN NaN 18000.0
beijing 60000.0 30000.0 NaN
cars NaN NaN 12000.0
shanghai 55000.0 20000.0 NaN
>>>

merge合并

>>> df1 = pd.DataFrame({"salaries":[10000,30000,30000,20000,15000],'cities':['suzhou','beijing','shanghai','guanghzou','tianjin']})
>>> df4 = pd.DataFrame({'apts':[55000,60000],'cars':[15000,12000],'cities':['shanghai','beijing']})
>>> result = pd.merge(df1,df4,on='cities') #on表示合并的列
>>> result
cities salaries apts cars
0 beijing 30000 60000 12000
1 shanghai 30000 55000 15000
>>> result = pd.merge(df1,df4,on='cities',how='right')
>>> result
cities salaries apts cars
0 beijing 30000 60000 12000
1 shanghai 30000 55000 15000
>>> result = pd.merge(df1,df4,on='cities',how='left')
>>> result
cities salaries apts cars
0 suzhou 10000 NaN NaN
1 beijing 30000 60000.0 12000.0
2 shanghai 30000 55000.0 15000.0
3 guanghzou 20000 NaN NaN
4 tianjin 15000 NaN NaN

python之pandas&&DataFrame(二)的更多相关文章

  1. Python:pandas(二)——pandas函数

    Python:pandas(一) 这一章翻译总结自:pandas官方文档--General functions 空值:pd.NaT.np.nan //判断是否为空 if a is np.nan: .. ...

  2. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  3. python之pandas&&DataFrame

    1.Series  Series是一个一维数组 pandas会默认从0开始作为Series的index >>> test = pd.Series(['num0','num1','nu ...

  4. Python中pandas dataframe删除一行或一列:drop函数

    用法:DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False) 参数说明:labels 就是要删除的行列的 ...

  5. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  6. 【338】Pandas.DataFrame

    Ref: Pandas Tutorial: DataFrames in Python Ref: pandas.DataFrame Ref: Pandas:DataFrame对象的基础操作 Ref: C ...

  7. Python 学习 第十二篇:pandas

    pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,最常用的数据结构是:序列Series和数据框DataFrame,Series类似于numpy中的一维数组,类似于关 ...

  8. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  9. Python常用库之二:Pandas

    Pandas是用于数据操纵和分析,建立在Numpy之上的.Pandas为Python带来了两种新的数据结构:Pandas Series和Pandas DataFrame,借助这两种数据结构,我们能够轻 ...

随机推荐

  1. 【CF625E】Frog Fights(模拟)

    [CF625E]Frog Fights(模拟) 题面 CF 洛谷 翻译: 有\(n\)只青蛙在一个被分为了\(m\)等分的圆上,对于每份顺时针依次标号. 初始时每只青蛙所在的位置是\(p_i\),速度 ...

  2. POJ P3254 Corn fields 【状压dp】

    Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16909 Accepted: 8939 Descript ...

  3. 在make php-5.5.5时提示没有X11/xpm.h,怎么解决!

    yum install libXpm-devel在查询他的安装位置:#rpm -ql libXpm-devel/usr/bin/cxpm/usr/bin/sxpm/usr/include/X11/xp ...

  4. 专题训练之区间DP

    例题:以下例题部分的内容来自https://blog.csdn.net/my_sunshine26/article/details/77141398 一.石子合并问题 1.(NYOJ737)http: ...

  5. Project Euler 453 Lattice Quadrilaterals 困难的计数问题

    这是一道很综合的计数问题,对于思维的全面性,解法的过渡性,代码能力,细节处理,计数问题中的各种算法,像gcd.容斥.类欧几里德算法都有考察.在省选模拟赛中做到了这题,然而数据范围是n,m小于等于100 ...

  6. SpringMVC 重定向

    在返回视图名字的字符串前面加forword:或redirect:前缀是就会对他们做特殊处理,它们分别是转发和重定向 我们测试一个重定向操作把 Java代码 @RequestMapping(" ...

  7. ML博客链接

    http://blog.csdn.net/yingwei13mei/article/category/6602238 各种都有(系统教程):http://www.easemob.com/news/76 ...

  8. angular2 获取到的数据无法实时更新的问题

    在修改完组件数据之后调用下面两句: this.changeDetectorRef.markForCheck(); this.changeDetectorRef.detectChanges(); 注入到 ...

  9. navicat for mysql 导出数据的坑

    navicat 选择转储结构和数据的时候,生成的 sql 文件会比较大,因为每一条数据都会生成一条 sql 语句,所以会导致 使用 source 还原的时候会很慢很慢很慢, 而使用 mysqldump ...

  10. Turkey HSD检验法/W法

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...