pandas基础数据结构,有以下两种:
Series,与array很像也和list相同,Series能保存不同的种数据类型,包括字符串、bool值、数字等等。
DataFrame,二维的表格型数组结构,以下内容以DataFrame为主。
Series初始化(类型转换)s=pd.Series([1,2,3,np.nan,6.8])
索引-行标签,查看值 a.values,a[0],切片都和numpy一样。
索引赋值 a.index.name="索引",a.index=list("abcdef"),就不是01234了。
如果赋值给索引了,再想取切片的话,就不是0:3这样的了,而是s["a":"c"](注意,这里是闭区间,不是左闭右开)
DataFrame,是一个二维结构。现在构造一个时间序列
data=pd.date_range("20190101",periods=6)(这里要写起点,周期)
创建一个DataFrame结构,df=pd.DataFrame(np,random,randn(6,4),index=data,columns=list("ABCD"))。如果不指定index和columns,则默认从0开始的数字。随机生成六行四列的随机数组。
除了传入二维数组,我们也可以使用字典传入数据:
df2=pd.DataFrame(["A":1.2,"B":pd.Timestamp("20181001"),"C":pd.Series(1,index=list(range(4)),dtype=float),"D":np.array([3]*4,dtype=int),"E":pd.Categorical(["test","train","test","train"]),"F":"abc"])
查看头尾数据
df.head(),默认前5行
df.tail(3),查看最后3行数据。
df.dtypes,查看所有的数据类型
下标的查看,df.index
列标的查看,df.columns
数据值的查看,df.values
pandas读取数据及数据操作
读取excel文件df=pd.read_excel(r“文件路径”),前面加r的意思是不需要对我写的路径进行转义,我写的是什么就是什么。
读取csv文件df=pd.csv.read_csv("文件路径")
行操作,df.iloc[0],df.iloc[0:5]这样的操作。df.loc[0:5],唯一不同就是不是左闭右开,索引5也在里面了。
添加一行dit={把每一列数据,相当于字典输入。} s=pd.Series(dit) s.name=前面数据索引号加1 df=df.append(s)
删除一行 df=df.drop([索引号])
列操作 df.columns,查看列名。df["名字"][:5],排在前5的名字。df["xx","xx","xx"]查看多行。
增加一列,df["y"]=range(1,len(df)+1),因为range右边不包含,所以要加一。
删除一列,df=df.drop("y",axis=1)
通过标签选择数据df.loc[[index],[column]]
条件选择 df[df["产地"]=="美国"] df[df["产地"]=="美国"][:5] 只看前5行
df[(df.产地==“美国”)&(df.评分>9)]
df[((df.产地==“美国”)|(df.产地==“中国大陆”))&(df.评分>9)]
缺失值处理
1、dropna 根据标签中的缺失值进行过滤,删除缺失值
参数解释:how=“all”,删除全为空的行或列,inplace=True覆盖之前的数据,axis=0(行)axis=1(列)默认选择行
2、fillna 对缺失值进行填充 df.fiilna(0)
均值填充df["评分"].fillna(np.mean(df["评分"]),inplace=True)
3、isnull 返回布尔值,判断哪些值是缺失值 df.isnull() df["名字"].isnull()
4、notnull isnull的否定式
处理异常值
df[df.投票人数<0]
df[df["投票人数"]%1!=0](不是整数)df[df["投票人数"]%1==0](保留整数)
数据保存
df.to_excel("保存文件的路径")
数据格式的转换
查看数据df["XXX"].dtype
类型转换df["XXX"]=df["XXX"].astype("int")
<