python3 Pandas
一.Pandas
1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,主要用于数据处理(数据整理,操作,存储,读取等)
2.http://pandas.pydata.org/
3.pandas中的数据结构:
Series一维数组,只允许存储相同的数据类型;
Time- Series:以时间为索引的Series;
DataFrame:二维的表格型数据结构;
Panel :三维的数组,可以理解为DataFrame的容器
二.创建表格
1.Series创建一维标记数据表格,相似于ndarry,但有索引(从0开始)(表格的列的列表)
__init__(self, data=None, index=None, dtype=None, name=None,copy=False, fastpath=False)
一般形式:s = pd.Series(data, index=index) #data可以是一个字典,一个ndarray,或标量值(5)
(1)ndarray
#ndarry,若设置索引,则索引的长度必须与数据的长度相同,
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
s2=pd.Series(np.random.randn(5))#如果没有传递索引,将创建一个具有值的索引。[0, ..., len(data) - 1]
print(s)
print(s2)
-------------------------------------------
a -0.019921
b -2.324644
c -0.429393
d 1.436731
e 2.564406
dtype: float64
0 -0.925714
1 0.319075
2 0.528071
3 -0.385841
4 0.963207
dtype: float64
ndarray
(2)dict
#dict,
#1.当未传递Series索引时,键表示索引,值表示值
d = {'b' : 1, 'a' : 0, 'c' : 2}
s=pd.Series(d)
print(s)
#2.如果传递索引,则将拉出与索引中的标签对应的数据中的值,NaN(不是数字)是pandas中使用的标准缺失数据标记
s2=pd.Series(d, index=['b', 'c', 'd', 'a'])
print(s2)
----------------------------------------------------------
a 0
b 1
c 2
dtype: int64
b 1.0
c 2.0
d NaN
a 0.0
dtype: float64
字典
(3)标量
#标量,如果data是标量值,则必须提供索引。将重复该值以匹配索引的长度
s=pd.Series(5., index=['a', 'b', 'c', 'd', 'e'])
print(s) -------------------------------------------------------
a 5.0
b 5.0
c 5.0
d 5.0
e 5.0
dtype: float64
标量
2.DataFrame:二维的表格型数据结构,具有可能不同类型的列,可以视为电子表格或SQL表,或Series对象的字典
__init__(self, data=None, index=None, columns=None, dtype=None,copy=False)
一般形式:s = pd.DataFrame(data, index=index) #data可以是ndarray,列表,字典,series,dataframe
(1)字典{‘columns’:series},推荐
#字典,#字典的键为columns,值为每一个series,#通过字典创建会产生列的顺序会是随机的
d = { 'one': pd.Series([1., 2., 3.],index=['a', 'b', 'c']),
'two': pd.Series([1., 2., 3., 4.],index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df)
print(pd.DataFrame(d, index=['d', 'b', 'a']))#如果没有传递列,则列将是dict键的有序列表。
print(pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three']))
-----------------------------------------------------------
one two
a 1.0 1.0
b 2.0 2.0
c 3.0 3.0
d NaN 4.0
one two
d NaN 4.0
b 2.0 2.0
a 1.0 1.0
two three
d 4.0 NaN
b 2.0 NaN
a 1.0 NaN
字典
(2)字典{‘columns’:ndarrays / lists}
#字典,ndarrays必须都是相同的长度,
d = {'one' : [1., 2., 3., 4.],
'two' : [4., 3., 2., 1.]}
df = pd.DataFrame(d)
print(df)#如果没有传递索引,结果将是range(n),
print(pd.DataFrame(d, index=['a', 'b', 'c', 'd']))#如果传递索引,则它必须明显与数组的长度相同。
----------------------------------------
one two
0 1.0 4.0
1 2.0 3.0
2 3.0 2.0
3 4.0 1.0
one two
a 1.0 4.0
b 2.0 3.0
c 3.0 2.0
d 4.0 1.0
字典2
(3)列表【{‘columns’:},{}】
#列表【字典】,每个字典的值代表的是每条记录(一行),而且顺序确定,字典的键表示columns
data2 = [{'a': 1, 'b': 2},
{'a': 5, 'b': 10, 'c': 20}]
df=pd.DataFrame(data2)
print(df)
print(pd.DataFrame(data2, index=['first', 'second']))
print(pd.DataFrame(data2, columns=['a', 'b']))
-----------------------------------------------------
a b c
0 1 2 NaN
1 5 10 20.0
a b c
first 1 2 NaN
second 5 10 20.0
a b
0 1 2
1 5 10
列表
(4)其他:结构化,字典(元组),记录等
3.总结:
(1)series是具有索引的一维标记表格,而dataframe类似索引的Series对象的dict(columns)
(2)index索引(行标签)(表格第一列项)(描述每一行),columns列(列标签)(表格第一行项)(描述每一列)
三.查看数据
import numpy as np
import pandas as pd
dates = pd.date_range('', periods=6)#利用pandas产生日期数据,(开始日期,长度)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
#生成二维表格,索引是日期,纵列是abcd的列表,数据为随机产生的数
#看dataframe:从左到右,从上到下,最左边一列是索引列表,每一条索引表示一条记录
print(df)
print(df.dtypes)#显示每条纵列的数据类型
print(df.head(1))#从表格顶部开始显示表格,默认全部显示
print(df.tail(4))#从表格底部开始显示表格,默认全部显示
------------------------------------------------------
A B C D
2018-05-07 -1.224660 0.642997 0.513311 0.867978
2018-05-08 -0.190702 -0.186858 -1.187651 -0.243407
2018-05-09 2.036292 1.720265 0.633207 -0.480980
2018-05-10 -2.141022 1.062058 1.118255 0.677325
2018-05-11 0.084533 -1.357477 1.135133 0.163912
2018-05-12 -1.111821 -1.859636 -1.018877 1.500960
A float64
B float64
C float64
D float64
dtype: object
A B C D
2018-05-07 -1.22466 0.642997 0.513311 0.867978
A B C D
2018-05-09 2.036292 1.720265 0.633207 -0.480980
2018-05-10 -2.141022 1.062058 1.118255 0.677325
2018-05-11 0.084533 -1.357477 1.135133 0.163912
2018-05-12 -1.111821 -1.859636 -1.018877 1.500960
查看数据
import numpy as np
import pandas as pd
dates = pd.date_range('', periods=6)#利用pandas产生日期数据,(开始日期,长度)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df.index)#显示索引相关信息
print(df.columns)#显示纵列相关信息
print(df.values)#显示表格数据
-----------------------------------------------------------
DatetimeIndex(['2018-05-07', '2018-05-08', '2018-05-09', '2018-05-10',
'2018-05-11', '2018-05-12'],
dtype='datetime64[ns]', freq='D')
Index(['A', 'B', 'C', 'D'], dtype='object')
[[ 0.7783973 -0.85917061 -0.80297609 0.19146651]
[ 0.17786108 0.05542154 0.26696242 0.85977364]
[-0.90406197 0.86919366 -0.19532951 -1.51333716]
[ 1.17939517 -0.71215508 0.6994515 0.14105961]
[-1.40057553 -0.19872321 1.04690513 -0.02428399]
[-1.33587412 1.27565206 -1.22414705 -0.31345343]]
查看数据2
import numpy as np
import pandas as pd
dates = pd.date_range('', periods=6)#利用pandas产生日期数据,(开始日期,长度)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df.describe())#显示图标数据的一些统计摘要,比如平均值,方差等
print(df.T)#转置整个表格
print(df.sort_index(axis=1,ascending=False))#按index排序,以列名称进行排序,以倒的顺序排序
print(df.sort_values(by='C'))#指定某一属性,按值从小到大把整个列表排序
--------------------------------------------------------------------
A B C D
count 6.000000 6.000000 6.000000 6.000000
mean 0.322268 0.380395 -0.007915 -0.074197
std 0.747649 1.309477 1.065533 1.122326
min -0.581089 -1.056308 -1.277190 -1.683641
25% -0.140576 -0.432361 -0.891893 -0.807084
50% 0.292569 -0.052893 0.099397 0.057339
75% 0.573371 1.229704 0.639316 0.812405
max 1.547544 2.346076 1.433943 1.154910
2018-05-07 2018-05-08 2018-05-09 2018-05-10 2018-05-11 2018-05-12
A 0.558207 -0.196412 0.578425 0.026930 1.547544 -0.581089
B 0.241584 -1.056308 1.559078 -0.347370 -0.460691 2.346076
C -0.283660 0.691603 -1.277190 0.482454 -1.094637 1.433943
D -0.933690 -1.683641 0.902558 -0.427266 0.541944 1.154910
D C B A
2018-05-07 -0.933690 -0.283660 0.241584 0.558207
2018-05-08 -1.683641 0.691603 -1.056308 -0.196412
2018-05-09 0.902558 -1.277190 1.559078 0.578425
2018-05-10 -0.427266 0.482454 -0.347370 0.026930
2018-05-11 0.541944 -1.094637 -0.460691 1.547544
2018-05-12 1.154910 1.433943 2.346076 -0.581089
A B C D
2018-05-09 0.578425 1.559078 -1.277190 0.902558
2018-05-11 1.547544 -0.460691 -1.094637 0.541944
2018-05-07 0.558207 0.241584 -0.283660 -0.933690
2018-05-10 0.026930 -0.347370 0.482454 -0.427266
2018-05-08 -0.196412 -1.056308 0.691603 -1.683641
2018-05-12 -0.581089 2.346076 1.433943 1.154910
查看数据3
四.选择数据
import numpy as np
import pandas as pd dates = pd.date_range('', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df['A']) # 获取指定纵行数据,按键索引,等同于print(df.A)
print(df[0:3]) # 获取指定索引数据,按序索引,等同于print(df['20180507':'20180509'])
#按标签选择数据loc
print(df.loc[dates[0]])#选择index列表中第一个元素对应的一组数据,相当于print(df.loc['20180507'])
print(df.loc[:, ['A', 'B']])#选择(所有index,a和b两组)的数据
print(df.loc['':'', ['A', 'B']])
#选择(index:'20180509':'20180512',columns:['A', 'B'])的数据
--------------------------------------------------------
2018-05-07 1.199961
2018-05-08 -0.336282
2018-05-09 0.033081
2018-05-10 -0.949975
2018-05-11 0.155855
2018-05-12 -0.901445
Freq: D, Name: A, dtype: float64
A B C D
2018-05-07 1.199961 0.190652 1.412162 -1.005569
2018-05-08 -0.336282 1.445801 -0.584581 -0.101581
2018-05-09 0.033081 -0.069119 -0.545210 -0.339678
A 1.199961
B 0.190652
C 1.412162
D -1.005569
Name: 2018-05-07 00:00:00, dtype: float64
A B
2018-05-07 1.199961 0.190652
2018-05-08 -0.336282 1.445801
2018-05-09 0.033081 -0.069119
2018-05-10 -0.949975 0.557865
2018-05-11 0.155855 -1.079446
2018-05-12 -0.901445 1.649649
A B
2018-05-09 0.033081 -0.069119
2018-05-10 -0.949975 0.557865
2018-05-11 0.155855 -1.079446
2018-05-12 -0.901445 1.649649
获取数据
import numpy as np
import pandas as pd
dates = pd.date_range('', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df)
#按位置选择iloc(索引序号进行选择)
print(df.iloc[3])#选择index列表中索引为3的数据
print(df.iloc[3:5, 0:2])#选择(index:3:5;columns:0:2)的数据
print(df.iloc[[1, 2, 4], [0, 2]])#(index:1,2,3)(columns:0,2)
print(df.iloc[1:3, :])#index:1:3;columns:所有
print(df.iloc[1, 1])#index:1;columns:1
------------------------------------------------
A B C D
2018-05-07 0.201876 -1.442301 1.465751 0.640606
2018-05-08 -0.775345 -0.534636 -0.091328 1.228146
2018-05-09 0.975878 1.260147 -0.006231 0.335106
2018-05-10 -0.520035 -1.354576 -1.364484 0.276557
2018-05-11 0.726874 0.223242 -0.037863 -1.681729
2018-05-12 0.550026 2.378874 -0.973442 1.530179
A -0.520035
B -1.354576
C -1.364484
D 0.276557
Name: 2018-05-10 00:00:00, dtype: float64
A B
2018-05-10 -0.520035 -1.354576
2018-05-11 0.726874 0.223242
A C
2018-05-08 -0.775345 -0.091328
2018-05-09 0.975878 -0.006231
2018-05-11 0.726874 -0.037863
A B C D
2018-05-08 -0.775345 -0.534636 -0.091328 1.228146
2018-05-09 0.975878 1.260147 -0.006231 0.335106
-0.534635999017828
获取数据2
import numpy as np
import pandas as pd
dates = pd.date_range('', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df)
#综合索引
print(df.ix[:3, ['A', 'C']])#index:0:3;columns:'A','C'
#布尔索引
print(df[df.A > 0])#条件筛选
----------------------------------------------------
A B C D
2018-05-07 0.383763 0.177597 0.445263 0.873108
2018-05-08 0.171476 0.549246 0.531994 -1.414907
2018-05-09 -1.008178 0.927677 0.774119 -0.058670
2018-05-10 -0.500451 -0.881271 -0.576227 0.876132
2018-05-11 -1.289566 -0.351046 0.765377 0.168464
2018-05-12 0.676490 -0.806772 0.194579 -0.205643
A C
2018-05-07 0.383763 0.445263
2018-05-08 0.171476 0.531994
2018-05-09 -1.008178 0.774119
A B C D
2018-05-07 0.383763 0.177597 0.445263 0.873108
2018-05-08 0.171476 0.549246 0.531994 -1.414907
2018-05-12 0.676490 -0.806772 0.194579 -0.205643
获取数据3
五.修改,添加数据
import numpy as np
import pandas as pd
dates = pd.date_range('', periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4), index=dates, columns=list('ABCD'))
print(df)
#通过索引找到数据,再直接赋值修改数据
df.iloc[2,2]=1111
df.loc['','B']=1111
df[df.A>4]=0
df['E']=np.nan#添加空列E
#添加新的一列数据,要对齐
df['E']=pd.Series([1,2,3,4,5,6],index=pd.date_range('',periods=6))
print(df)
-------------------------------------------------------
A B C D
2018-05-07 0 1 2 3
2018-05-08 4 5 6 7
2018-05-09 8 9 10 11
2018-05-10 12 13 14 15
2018-05-11 16 17 18 19
2018-05-12 20 21 22 23
A B C D E
2018-05-07 0 1 2 3 1
2018-05-08 4 5 6 7 2
2018-05-09 0 0 0 0 3
2018-05-10 0 0 0 0 4
2018-05-11 0 0 0 0 5
2018-05-12 0 0 0 0 6
修改添加数据
六.处理丢失数据
import numpy as np
import pandas as pd
dates = pd.date_range('', periods=3)
df = pd.DataFrame(np.arange(12).reshape(3,4), index=dates, columns=list('ABCD'))
#np.nan表示丢失的数据,默认不包含计算中
df.ix[1,'C']=np.nan
print(df)
#删除对应数据
print(df.dropna(axis=0,how='any'))#删除行:行中只要有一个丢失数据就删除
print(df.dropna(axis=1,how='all'))#删除列:列中所有数据都是丢失数据就删除
#填充对应数据
print(df.fillna(value=0))#在丢失数据上把nan变为0
#检查是否确实数据
print(df.isnull())#print(df.isna())
-----------------------------------------------------------
A B C D
2018-05-07 0 1 2.0 3
2018-05-08 4 5 NaN 7
2018-05-09 8 9 10.0 11
A B C D
2018-05-07 0 1 2.0 3
2018-05-09 8 9 10.0 11
A B C D
2018-05-07 0 1 2.0 3
2018-05-08 4 5 NaN 7
2018-05-09 8 9 10.0 11
A B C D
2018-05-07 0 1 2.0 3
2018-05-08 4 5 0.0 7
2018-05-09 8 9 10.0 11
A B C D
2018-05-07 False False False False
2018-05-08 False False True False
2018-05-09 False False False False
处理丢失数据
七.文件读取和保存
解决乱码:https://blog.csdn.net/leonzhouwei/article/details/8447643
选择格式时,选择csv utf-8(逗号分隔)
CSV即Comma Separate Values,这种文件格式经常用来作为不同程序之间的数据交互的格式;CSV是以逗号间隔的文本文件
import pandas as pd
data=pd.read_csv('foo.csv')
print(data)
data.to_excel('foo.xlsx')
-----------------------------------------------
jpdfpa
0 dafhpah
1 adfalln
2 '活动'
数据导入导出
八.合并
import numpy as np
import pandas as pd
#concatenating
df1=pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df2=pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
print('df1:',df1)
print('df2:',df2)
res=pd.concat([df1,df2],axis=0,ignore_index=True)#合并,index列表添加(上下合并),忽略以前的index
print('res:',res) #join['inner','outer']
df3=pd.DataFrame(np.ones((3,4))*3,columns=['b','c','d','e'])
print('df3:',df3)
res2=pd.concat([df1,df3],join='outer')#合并,index列表添加,columns列表并集
res3=pd.concat([df1,df3],join='inner')#合并,index列表添加,columns列表交集
print('res2:',res2)
print('res3:',res3) #join_axes
res4=pd.concat([df1,df3],axis=1,join_axes=[df1.index])
#合并,columns列表添加(左右合并),以df1的index进行处理
print('res4:',res4) #append
res5=df1.append(df2,ignore_index=True)#把一个表添加到另一个表中,向下添加,
res6=df1.append([df2,df3])#把两个表添加到另一个表中,向下添加,
print('res5:',res5)
print('res6:',res6)
s1=pd.Series([1,2,3,4],index=['a','b','c','d'])
res7=df1.append(s1,ignore_index=True)#添加一个index
print('res7:',res7)
--------------------------------------------------------------
df1: a b c d
0 1.0 1.0 1.0 1.0
1 1.0 1.0 1.0 1.0
2 1.0 1.0 1.0 1.0
df2: a b c d
0 2.0 2.0 2.0 2.0
1 2.0 2.0 2.0 2.0
2 2.0 2.0 2.0 2.0
res: a b c d
0 1.0 1.0 1.0 1.0
1 1.0 1.0 1.0 1.0
2 1.0 1.0 1.0 1.0
3 2.0 2.0 2.0 2.0
4 2.0 2.0 2.0 2.0
5 2.0 2.0 2.0 2.0
df3: b c d e
0 3.0 3.0 3.0 3.0
1 3.0 3.0 3.0 3.0
2 3.0 3.0 3.0 3.0
res2: a b c d e
0 1.0 1.0 1.0 1.0 NaN
1 1.0 1.0 1.0 1.0 NaN
2 1.0 1.0 1.0 1.0 NaN
0 NaN 3.0 3.0 3.0 3.0
1 NaN 3.0 3.0 3.0 3.0
2 NaN 3.0 3.0 3.0 3.0
res3: b c d
0 1.0 1.0 1.0
1 1.0 1.0 1.0
2 1.0 1.0 1.0
0 3.0 3.0 3.0
1 3.0 3.0 3.0
2 3.0 3.0 3.0
res4: a b c d b c d e
0 1.0 1.0 1.0 1.0 3.0 3.0 3.0 3.0
1 1.0 1.0 1.0 1.0 3.0 3.0 3.0 3.0
2 1.0 1.0 1.0 1.0 3.0 3.0 3.0 3.0
res5: a b c d
0 1.0 1.0 1.0 1.0
1 1.0 1.0 1.0 1.0
2 1.0 1.0 1.0 1.0
3 2.0 2.0 2.0 2.0
4 2.0 2.0 2.0 2.0
5 2.0 2.0 2.0 2.0
res6: a b c d e
0 1.0 1.0 1.0 1.0 NaN
1 1.0 1.0 1.0 1.0 NaN
2 1.0 1.0 1.0 1.0 NaN
0 2.0 2.0 2.0 2.0 NaN
1 2.0 2.0 2.0 2.0 NaN
2 2.0 2.0 2.0 2.0 NaN
0 NaN 3.0 3.0 3.0 3.0
1 NaN 3.0 3.0 3.0 3.0
2 NaN 3.0 3.0 3.0 3.0
res7: a b c d
0 1.0 1.0 1.0 1.0
1 1.0 1.0 1.0 1.0
2 1.0 1.0 1.0 1.0
3 1.0 2.0 3.0 4.0
添加
#merge
import numpy as np
import pandas as pd
left = pd.DataFrame({'key': ['foo', 'bar'], 'lval': [1, 2]})
right = pd.DataFrame({'key': ['foo', 'bar'], 'rval': [4, 5]})
print(left)
print(right)
res=pd.merge(left,right,on='key')#基于相同columns=‘key’进行合并
print(res)
# res2=pd.merge(left,right,on=['key1','key2'])合并多个key
#how=['left','right','outer','inner']合并的方式:基于左边的表进行填充,右边的表进行填充,并集,交集
df1=pd.DataFrame({'coll':[0,1],'col_left':['a','b']})
df2=pd.DataFrame({'coll':[1,2,2],'col_left':[2,2,2]})
print(df1)
print(df2)
res2=pd.merge(df1,df2,on='coll',how='outer',indicator=True)#indicator显示merge方式
print(res2)
#left_index和right_index:是否考虑左边的index和右边的index,值有True或False
#suffixes:合并时,给一样的columns,不一样的数据,添加标记进行区分
boy=pd.DataFrame({'k':['k1','k2'],'age':[1,2]})
girl=pd.DataFrame({'k':['k1','k2'],'age':[3,4]})
res3=pd.merge(boy,girl,on='k',suffixes=['_boy','_girl'],how='inner')
print(res3)
----------------------------------------------------------------
key lval
0 foo 1
1 bar 2
key rval
0 foo 4
1 bar 5
key lval rval
0 foo 1 4
1 bar 2 5
col_left coll
0 a 0
1 b 1
col_left coll
0 2 1
1 2 2
2 2 2
col_left_x coll col_left_y _merge
0 a 0 NaN left_only
1 b 1 2.0 both
2 NaN 2 2.0 right_only
3 NaN 2 2.0 right_only
age_boy k age_girl
0 1 k1 3
1 2 k2 4
merge
九.运算
import pandas as pd
import numpy as np
data={'one':{'a':1,'b':2,'c':3,'d':np.nan},
'two': {'a': 2.0, 'b': 3.0, 'c': 4.0, 'd': 5.0}}
df=pd.DataFrame(data,index=['a','b','c','d'],columns=['one','two'])
print('df:',df)
#根据原有的列添加新列
df['three']=df['one']*10+df['two']
print(df)
#求均值
print('mean:\n',df.mean(1))#参数1,计算行均值;默认0,按列求均值,
print('sum:\n',df.sum(1))#参数1,计算行和;默认0,按列求和
print('函数:\n',df.apply(lambda x:x.max()-x.min()))#将一个函数应用到dataframe的每一列
#设置索引
df.set_index('one')
#重命名列
df.rename(columns={'one':''},inplace=True)
print(df)
----------------------------------------------------
df: one two
a 1.0 2.0
b 2.0 3.0
c 3.0 4.0
d NaN 5.0
one two three
a 1.0 2.0 12.0
b 2.0 3.0 23.0
c 3.0 4.0 34.0
d NaN 5.0 NaN
mean:
a 5.000000
b 9.333333
c 13.666667
d 5.000000
dtype: float64
sum:
a 15.0
b 28.0
c 41.0
d 5.0
dtype: float64
函数:
one 2.0
two 3.0
three 22.0
dtype: float64
1 two three
a 1.0 2.0 12.0
b 2.0 3.0 23.0
c 3.0 4.0 34.0
d NaN 5.0 NaN
运算
import pandas as pd
import numpy as np
data={'one':{'a':1,'b':2,'c':3,'d':np.nan},
'two': {'a': 2.0, 'b': 3.0, 'c': 4.0, 'd': 5.0}}
df=pd.DataFrame(data,index=['a','b','c','d'],columns=['one','two'])
print('df:',df)
#查看最大最小值即其对应index
print(df['two'].max())#min取最小
print(df['two'].idxmax())#idmin取最小
#重设索引
df.reset_index(inplace=True)
print(df)
#改变数据类型
print(df.dtypes)
df1=df[['two',]].astype('int32')
print(df1.dtypes)
#计算频率
print(df['index'].value_counts())
#字符方法
print(df['index'].str.upper())#大写
print(df['index'].str.len())#长度
print(df['index'].str.contains('s'))#包含
#。。。。
-------------------------------------------------------------
df: one two
a 1.0 2.0
b 2.0 3.0
c 3.0 4.0
d NaN 5.0
5.0
d
index one two
0 a 1.0 2.0
1 b 2.0 3.0
2 c 3.0 4.0
3 d NaN 5.0
index object
one float64
two float64
dtype: object
two int32
dtype: object
c 1
d 1
b 1
a 1
Name: index, dtype: int64
0 A
1 B
2 C
3 D
Name: index, dtype: object
0 1
1 1
2 1
3 1
Name: index, dtype: int64
0 False
1 False
2 False
3 False
Name: index, dtype: bool
运算2
十.可视化数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# data=pd.Series(np.random.randn(1000),index=np.arange(1000))#随机生成数据
# data=data.cumsum()#把生成的数据进行累加
# data.plot()#画图
# plt.show()#显示图 data=pd.DataFrame(np.random.randn(1000,4),
index=np.arange(1000),
columns=list('ABCD'))
data=data.cumsum()#把生成的数据进行累加
data.plot()#画图
plt.show()#显示图
-------------------------------------
可视化
data=pd.DataFrame(np.random.randn(1000,4),
index=np.arange(1000),
columns=list('ABCD'))
data=data.cumsum()
ax=data.plot.scatter(x='A',y='B',color='DarkBlue',label='Class 1')
data.plot.scatter(x='A',y='C',color='DarkGreen',label='Class 2',ax=ax)
plt.show()
-----------------------------------------
可视化
十.总结
1.pandas中index表示行(列表),对应axis=0行操作
columns表示列(列表),对应axis=1列操作
通过字典创建dataframe,创建的图表:最左边是index列表,从上到下;最上面是columns列表,从左到右;中间是字典数据,每一个数据对应相应的index和columns
ix(index,columns):既可以传入索引,也可以传入切片
file:///C:/Users/11373/Desktop/Pandas_Cheat_Sheet.pdf
python3 Pandas的更多相关文章
- Python3 Pandas的DataFrame数据的增、删、改、查
Python3 Pandas的DataFrame数据的增.删.改.查 一.DataFrame数据准备 增.删.改.查的方法有很多很多种,这里只展示出常用的几种. 参数inplace默认为False,只 ...
- Python3 Pandas的DataFrame格式数据写入excle文件、json、html、剪贴板、数据库
Python3 Pandas的DataFrame格式数据写入excle文件.json.html.剪贴板.数据库 一.DataFrame格式数据 Pandas是Python下一个开源数据分析的库,它提供 ...
- Python3 pandas用法大全
Python3 pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as ...
- mac安装python3 pandas tushare
1,升级pip python3 -m pip install --upgrade pip 2,安装依赖包 pip install --user numpy scipy jupyter pandas s ...
- python3 pandas DataFrame常见用法
df = pandas.read_clipboard() df 获取索引和值 df.index df.values DataFrame的values属性将数据以二维ndarray形式返回,dtype类 ...
- MongoDB Aggregate Methods(2) MonoDB 的 3 种聚合函数
aggregate(pipeline,options) 指定 group 的 keys, 通过操作符 $push/$addToSet/$sum 等实现简单的 reduce, 不支持函数/自定义变量 g ...
- python3 库pandas写入csv格式文件出现中文乱码问题解决方法
python3 库pandas写入csv格式文件出现中文乱码问题解决方法 解决方案: 问题是使用pandas的DataFrame的to_csv方法实现csv文件输出,但是遇到中文乱码问题,已验证的正确 ...
- python3安装pandas执行pip3 install pandas命令后卡住不动的问题及安装scipy、sklearn库的numpy.distutils.system_info.NotFoundError: no lapack/blas resources found问题
一直尝试在python3中安装pandas等一系列软件,但每次执行pip3 install pandas后就卡住不动了,一直停在那,开始以为是pip命令的版本不对,还执行过 python -m pip ...
- pandas基础-Python3
未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...
随机推荐
- Direct2D 学习笔记(3)图层 Layer
利用图层Layer绘制资源网址:https://docs.microsoft.com/zh-cn/windows/win32/direct2d/direct2d-layers-overview 1 ...
- windows服务器入门 mysql的安装
钱的问题 只能安装mysql了 下载MySQL 5.5(其他的版本都可以的 只是在这里以mysql5.5为例)安装包(下载地址:http://dev.mysql.com/downloads/my ...
- Win10下 jdk的安装
jdk 的下载地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在 D 盘 ...
- python 使用 RabbitMQ
一.RabbitMQ消息队列介绍 RabbitMQ是在两个独立得python程序,或其他语言交互时使用. RabbitMQ:erlang语言 开发的. Python中连接RabbitMQ的模块:pik ...
- [转帖]Greenplum: 基于PostgreSQL的分布式数据库内核揭秘(下篇)
Greenplum: 基于PostgreSQL的分布式数据库内核揭秘(下篇) http://www.postgres.cn/v2/news/viewone/1/454 原作者:姚延栋 创作时间:201 ...
- java基础--Java虚拟机
·JVM (Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一.我们编写的Java ...
- Spring AOP 简介(三)
Spring AOP 简介 如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用. AOP 即 Aspect Orien ...
- QComboBox的currentIndexChanged信号死循环问题
connect(m_pComboBoxDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(sltComboBoxDeviceCurrentText ...
- Linux系统下如何优雅地关闭Java进程?
资料出处: http://www.sohu.com/a/329564560_700886 https://www.cnblogs.com/nuccch/p/10903162.html 前言 Linux ...
- C# 钉钉第三方开发接入
钉钉开放平台 本文是针对钉钉开放平台的基于dotNetCore服务端开发和配置的描述 钉钉可开发的程序包括 企业内部应用,第三方企业应用,第三方个人应用 一.环境搭建 1.钉钉开发需要企业钉钉账号,如 ...