import pandas as pd
import numpy as np
#数据操作
# population={
'beijing':1242,'shanghai':423142,'guangzhou':244221}
# gdp={
'beijing':122,'shanghai':4242,'guangzhou':4221}
# a=pd.DataFrame({
'pop':population,'gdp':gdp})
#
# print(a['gdp'])#a取gdp这一列
# print(a.gdp)#直接a.列名,作用同上
# print(a.loc['beijing'])#取行用loc方法
# print(a.loc[['beijing','shanghai']])#取多行,里面一定是传入列表
# a.iloc[0,1]=0#给1行二列赋值
# s=pd.Series([1,1,2],index=['beijing','shanghai','guangzhou'])
# a['e']=s#增加列名为e的一列
# print(a)
#数据查看
# dates=pd.date_range(start='2020-1-1',periods=6)
# df=pd.DataFrame(np.random.randint(0,10,(6,4)),index=dates,columns=['A','B','C','D'])
# # df.describe()#描述均值、标准差、最小值、这些
# df.info()#展示哪些行哪些列,是否为空,数据类型这些信息
# df.head()#返回几行数据括号里就填几
# df.tail()#返回倒数几行
# df.T#进行行列转置
# # df.sort_index()#按索引进行排序
# # df.sort_values()#按值进行排序
# print(df.info())
# print(df.head(2))#这里是返回前两行数据
# print(df.tail(3))#这里是返回倒数三行
# print(df.T)
# print(df.sort_index(axis=0))
# print(df.sort_index(axis=1))
# print(df.sort_values('B'))
#计算
# a=pd.DataFrame([1,2,3])
# # print(a-2)#直接每个值减2
# b=pd.DataFrame([1,2,3])
# # print(a+b)#同类型的对应值相加
# c=pd.DataFrame(np.random.randint(1,10,size=(1,3)))
# print(a@c)#矩阵相乘
# d=pd.DataFrame(np.arange(9).reshape((3,3)),columns=['a','s','d'])
# e=pd.DataFrame(np.random.randint(10,(2,2)),columns=['a','s'])
# # print(d+e)#有缺失值会出错
# print(e.add(d,fill_value=0))#缺失的填充值为0
#缺失值
# a=pd.DataFrame(np.arange(9).reshape((3,3)))
# print(a)
# a.iloc[:2,2]=np.nan#将前两行第二列数值设置为空np.nan就是空的意思
#
# print(a)
# a.dropna(axis=1,how='all')#一整列都为空的话,才会把这列剔除
# print(a)
# a.fillna(value=1)#将表中所有缺失值都用1填充
# print(a)
#合并对齐
# a=pd.DataFrame(np.zeros((3,4)),columns=['a','b','c','d'])
# b=pd.DataFrame(np.zeros((3,4)),columns=['a','b','c','d'])
# print(pd.concat([a,b]))#垂直合并
# print(pd.concat([a,b],ignore_index=True))#忽视默认的轴,按顺序排列下来
# print(pd.concat([a,b],axis=1))#水平合并
# pd.merge(a,b)
#分组
df=pd.DataFrame({
'key':list('ABCCBA'),'data1':range(6),'data2':range(20,26)})
print(df)
print(df.groupby('key').sum())
print(df.groupby('key').mean())