Pandas学习

Pandas学习

视频教程

DataFrame和Series

DataFrame

df = pd.read_csv()

返回一个DataFrame对象,对象是二维表。

Series是一维的数据结构

可以手动指定names=name_list,表示columns叫啥

这个对象有很多属性

.index:RangeIndex,读入时,会默认指定行号,从0开始

.columns:列的名称

.shape:这个表长啥样,几行几列

.dtypes:每一列的数据类型

df.head():查看前数列

Series

创建一个Series:

series = pd.Series([1,'1',2], index = [1, 'b', 3])

series.index和dataframe的index一样,也是总共几个,步长多少

从DataFrame查询Series

DataFrame可以看作是有Series组成的字典,可以通过表示行的index访问,也可以通过表示列的columns访问。

如果查出来的是二维的,那么就是DataFrame,如果是一维的,就是Series。

查询一行:df.loc[index]

查询多行:df.loc[index_1:index_2]

查询一列:df[column_label]

从DataFrame查询数据

  1. df.loc:根据index和查询,甚至可以写入,常用
  2. df.iloc:
  3. df.where
  4. df.query

主要是loc[]的使用

参考:https://blog.csdn.net/weixin_45144170/article/details/106033436

loc[index/index_list/index_slice, label/label_list/label_slice]

条件表达式的查询

df.loc[expr, col_slice]

df['label'] > 0返回一个bool类型的Series,index和原dataframe一样,

可以把这个Series放到loc[]里,挑选出符合条件的行们。

从DataFrame中统计数据

全局统计

统计每个数字列,给出平均值、反差等信息。

df.describe()

统计结果还是一个dataframe。

枚举范围

查看某个列的取值范围,比如风向,爱好等

df['column`].unique`

某一列中某个值出现次数

利用Series的value_counts()方法

df['column_name'].value_count

相关系数

df.cov() # 整个表的协方差矩阵
df.corr() # 整个表的相关系数矩阵

要查看某两列的协方差或相关系数

df['column_1'].cov(df['column_2'])
df['column_1'].corr(df['column_2'])

我们在“挖掘数据”的时候,可以新建一些列,查看这些列和原有列的相关程度corr。

修改DataFrame中的数据

修改包括增删改

直接新建一个column

toys['col_a'] = toys['name'] + '_a'
temp['wencha'] = temp['high_temp'] - temp['low_temp']

根据条件新建column

可以这么理解:

一个函数,函数的参数是一个Series,返回值是str或者int。

这样,逐行遍历DataFrame中的Series,通过函数映射到一个值,写到新的column就行。

dataframe和Series都有apply方法,会把可迭代的单元代入进行判断,

比如DataFrame的迭代单元是Series,而Series的迭代单元就是单值。

def gtl_0(x) :
    if x['time'] > 0:
        return True
    else :
        return False

toys['time_gtl_0'] = toys.apply(gtl_0, axis = 1)

axis=1表示传入的Series是通过列名访问

直接通过loc条件表达式修改

df['temp_type'] = '' //
df.loc[df['high_temp']-df['low_temp'] > 10, 'temp_type'] = '温差大'

直接删除某一列

drop(col, axis=1, inplace=true)

对空的处理

  • 检测空值:isnull和notnull
  • 丢弃空值:
    • axis:按行还是按列丢弃
    • how:是存在空值则丢弃还是所有为空才丢弃
    • inplace:是直接在原df上修改还是返回一个新的df
  • 填空空值:fillna
    • value:填充的值,可以是单值,也可以是字典,key是列名,value是值
    • method:用前一非空值填充还是用后一个非空值填充
    • axis:按行还是按列填充
    • inplace:同上

检测空值

df.isnull()一个bool的dataframe
series.isnull()一个bool的series

df.isnull().sum()直接按列统计NAN个数,因为真值也是可以求和的。

notnull()的bool取反

因为其返回了一个bool类型的Series或DataFrame,所以可以用做loc中条件表达式的筛选。

筛选出toys中,name这一列中

toys.loc[toys['name'].isnull()]

删除空值

若某列中全是空值,则删除该列

toys.dropna(axis = 1, how = 'all', inplace = True)

若某行中含空值,则删除该行

toys.dropna(axis = 0, how = 'any', inplace = True)

填充空值

对于一个空值,若其在“分数”列中,则填充为0。

score.fillna({"分数":0})

对toys中price这一列,若存在空值,则用上一行的非空值来填充

toys['price'].fillna(method='ffill', inplace=True)

杂接口

df.set_index()

df默认index时是0开始,我们可以把index设置为某个column的值,然后再把这个列删掉。

参考: https://blog.csdn.net/lisnyuan/article/details/107086094

posted @ 2021-10-09 22:39  dutrmp19  阅读(49)  评论(0)    收藏  举报