# 数据结构
## Series--
用列表生成Series时,Pandas默认自动生成整数索引,也可以指定索引。是有索引的一维数组,numpy没有索引
import pandas as pd
import numpy as np
l = [0, 1, 7, 9, np.NAN, None, 1024, 1025]
#无论是numpy中的nan还是python中的None在pandas中都以缺失数据NaN对待
s1 = pd.Series(data = l)#Pandas自动添加索引
s2 = pd.Series(data =l,index = list('abcdefhi'),dtype = 'float32' )#指定行索引
#传入字典创建,key行索引
s3 = pd.Series(data = {'a':99,'b':137,'c':149})
display(s1,s2,s3)
## DataFrame
这是由多种类型的列构成的二维标签数据结构,类似于excel\sql\Series对象构成的字典。
import pandas as pd
import numpy as np
#index 作为行索引,字典中国的key作为列索引,创建3*3的DataFrame表格二维数组
df1 = pd.DataFrame(data = {'python':[99,107,122],'Math':[111,137,88],'En':[68,108,43]},
index = ['张三','李四','Michel'])#key是列索引,index是行索引
df2 = pd.DataFrame(data = np.random.randint(0, 151, size=(5, 3)),
index = ['Danial','Brandon','softpo','Ella','Cindy'],
columns = ['python','Math','En'])
display(df1,df2)
### 数据查看
查看DataFrame的常用属性和DataFrame的概览和统计信息
import pandas as pd
import numpy as np
#创建shape(150,3)的二维标签数组结构DataFrame
df = pd.DataFrame(data = np.random.randint(0,151,size = (150,3)),
index = None,
columns=['python','Math','En'])
#查看其属性、概览和统计信息
df.head(10)#显示头部10行,默认5个
df.tail(10)#显示末尾10行默认5个
df.shape
df.dtypes#查看数据类型
df.index#获取行索引
df.columns#获取列索引
df.values#获取对象值,二维ndarray数组
df.describe()#查看数值类型列的汇总统计
df.info()#查看列索引、数据类型、非空计数和内存信息
# 数据输入与输出
## 第一节csv
import pandas as pd
import numpy as np
df = pd.DataFrame(data = np.random.randint(0,50,size = (50,5)),#薪资情况
columns=['IT','化工','生物','教师','士兵'])
#保存到当前路劲下,文件名是:salary.csv.csv逗号分割值文件格式
df.to_csv('./salary.csv',sep = ';',#文本分割符合,默认是逗号
header = True,#是否保存列索引
index = True)#是否保存航索引,保存时,文件被加载时默认行索引会作为一列
#加载
pd.read_csv('./salary.csv',sep = ';',header=[0],index_col=0)#可以指定第几列作为行索引
#pd.read_table('./salary.csv',sep = ';',header=0,index_col=1)#it作为行索引
## 第二节 excel
import pandas as pd
import numpy as np
df1 = pd.DataFrame(data = np.random.randint(0,50,size = (50,5)),#薪资情况
columns=['IT','化工','生物','教师','士兵'])
df2 = pd.DataFrame(data = np.random.randint(0,50, size = (150,3)),
columns = ['python',&