资讯专栏INFORMATION COLUMN

Pandas常用用法

hedge_hog / 2155人阅读

摘要:常用用法详细内容请进入官网查阅文献。常用一般默认为零。可以给出表格的许多信息,看下面的结果常用的处理操作。表示给填充值返回一个列表如果有值为返回否则返回可以通过选择某一列为的情况下对其他数据进行查看转置,即列表的行与列互换。

pandas常用用法

详细内容请进入 pandas官网 查阅文献。


1. pd.read_csv() 常用parameters:

header : 一般默认为零。表示读进来的表格以第一行作为列名。其他值也是类似的。

index_col : 表示以什么作为行号。pandas在引入列表的时候默认会以0,1,2,3,4....作为行号。可以指定列表中的某一列作为行号。

usecols : 指定读进来的列是什么,以列表的形式给出,可以是列号,也可以是[0,1,2]这样的表示读进来0,1,2列。

names : 以列表形式给出,表示列号只显示出给定名称的列号,其他的隐藏。即你可以指定任一列的列号,可以是你自创的,也可以是列表里本来就有的。

squeeze : 表示如果传进来的表格只有一列,那么把它压缩成Serias的形式。默认值是False。

dtype : 指定列的数据形式。eg: dtype={"PassengerId":np.float64}


感觉比较常用的参数一般就这几个,其他的如果需要可以在官网上查找解释。

2. 常用表格信息描述函数 df.dtypes

可以把表格每一列数据的格式描述出来,eg:

A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object
df.index

把表格的行号列出,包括行号的格式。

df.columns

把表格的列号列出,包括列号的格式。

df.describe()

把每一列的均值,个数,方差,最大最小值列出。非常方便的函数。

        A    C    D
count  4.0  4.0  4.0
mean   1.0  1.0  3.0
std    0.0  0.0  0.0
min    1.0  1.0  3.0
25%    1.0  1.0  3.0
50%    1.0  1.0  3.0
75%    1.0  1.0  3.0
max    1.0  1.0  3.0
df.info()  

可以给出表格的许多信息,看下面的结果:


RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
3. 常用的datafram处理操作。 df[[" "," ",...]]

""中间的为列的名字,直接列出选中的列

dfdf.A>50]

不好说直接上代码:

df[df["Age"]>60][["Sex","Pclass","Age","Survived"]]
>>>
Sex    Pclass    Age    Survived
33    male    2    66.0    0
54    male    1    65.0    0
96    male    1    71.0    0
116    male    3    70.5    0
170    male    1    61.0    0
252    male    1    62.0    0
275    female    1    63.0    1
280    male    3    65.0    0
326    male    3    61.0    0
438    male    1    64.0    0
456    male    1    65.0    0
483    female    3    63.0    1
493    male    1    71.0    0
545    male    1    64.0    0
555    male    1    62.0    0
570    male    2    62.0    1
625    male    1    61.0    0
630    male    1    80.0    1
672    male    2    70.0    0
745    male    1    70.0    0
829    female    1    62.0    1
851    male    3    74.0    0

即是以某一列的值为条件进行筛选。

多个条件进行筛选。
for i in range(4):
    print(i,len(df[ (df["Sex"]=="male") & (df["Pclass"]==i)]))
>>>
0 0
1 122
2 108
3 347

&符号表示与,条件有两个,len()表示长度。

df.dropna() :

把表格中有nan或者na的行去掉。
pramaters:axis=0,how="any"
还有其他参数但是并不常用。"any"表示只要行或者列出现了nan则把该行或者该列去掉。如果为"all"表示必须全是nan才去掉。

df.fillna(value) :

表示给nan值填充值。value=0表示给nan填充0值

df.isnull() :

返回一个列表如果有值为nan返回True,否则返回False.

  A      B      C      D      E
2013-01-01  False  False  False  False  False
2013-01-02  False  False  False   True  False
2013-01-03  False  False  False  False   True
2013-01-04  False  False  False  False  False
2013-01-05  False  False  False  False  False
2013-01-06  False  False  False  False  False

## 可以通过选择某一列为Nan的情况下对其他数据进行查看
df[df.Age.isnull()].head(5)["Name"]
>>>
5                  Moran, Mr. James
17     Williams, Mr. Charles Eugene
19          Masselmani, Mrs. Fatima
26          Emir, Mr. Farred Chehab
28    O"Dwyer, Miss. Ellen "Nellie"
Name: Name, dtype: object
df.T :

转置,即列表的行与列互换。

df.loc[] :

表示按照标签来选择数据。

a.loc["one"]则会默认表示选取行为"one"的行

a.loc[:,["a","b"]表示选取所有的行以及columns为a,b的列;

a.loc[["one","two"],["a","b"]]表示选取"one"和"two"这两行以及columns为a,b的列;

a.loc["one","a"]与a.loc[["one"],["a"]]作用是一样的,不过前者只显示对应的值,而后者会显示对应的行和列标签。

df.iloc[] :

表示按照位置进行选择。

a.iloc[[0,2],[1,2]]

表示选取0行1列和2行2列的数据。

df.values :

把一个dataframe类型转化为numpy的array形式。很简单

df.replace() :

简单粗暴,把列表里的某一个值替换为另一个值。

df.replace("male",0).head(3)["Sex"]
>>>
0         0
1    female
2    female
Name: Sex, dtype: object

该函数还有一些其他参数:regrex,method等,详细可查阅官网,这里给出一些常用用法。

#选择某一列对不同的值进行不同的替换,采用字典嵌套的形式。
encode_setting = {"Embarked":{"S":1, "C": 2, "Q": 3, "Unknown":0}}
df.replace(encode_setting).head(3)[["Embarked"]]
>>>
    Embarked
0    1.0
1    2.0
2    1.0

#对多个值进行替换
df.replace({"male":1,"female":0}).head(3)[["Sex"]]
>>>
Sex
0    1
1    0
2    0
df.drop(axis,labels) :

表示扔掉某一行或者一列,axis指定行或者列,labels指定标签。labels可以用列表的方式来给定多个行或者列

value_counts() :

可以计算出每个取值在列表中出现的次数

df.groupby : 

可以按照你所指定的列对其不同的值进行分组,很强大的功能,这里给出代码更好理解。

df.groupby(["Survived","Pclass"]).sum()
## 按照Survived和Pclassd的取值,对其他的项进行相应的求和操作,不是数值型的不计数

df.groupby(["Survived","Pclass"]).size()
## size表示按照Survived和Pclass的取值,进行分别计数。除了size(),还有mean(),max(),min(),std()等
>>>
Survived  Pclass
0         1          80
          2          97
          3         372
1         1         136
          2          87
          3         119
dtype: int64

df.groupby(["Survived","Pclass"]).size()[0][1]
## 这里返回的是一个类似矩阵的存在。[0]表示Survived=0,[1]表示Pclass=1,这里前后顺序和你给出列的顺序有关。
>>>
80
##如果给定的列不止一个,会有多重索引(Multiindex),这里可以这样操作来选取对应的值。
a=df.groupby(["Survived","Sex",]).std()
a.index
>>>
ultiIndex(levels=[[0, 1], ["female", "male"]],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
           names=["Survived", "Sex"])
           
## 我们可以根据levels进行选取

a.xs([0,"female"],level=["Survived","Sex"])
>>>
    PassengerId    Pclass    Age    SibSp    Parch    Fare
Survived    Sex                        
0    female    263.522063    0.450309    13.618591    1.814635    1.391442    24.821287
## 接下来就可以根据需求选择列得到数值,同时可以加上.values来将其变为np.array的形式。这里的索引有俩个即Survived和Sex,行名就是levels,所以也可以用loc选择行和列进行选取
df.isin() :

选出给定列中某些值的特定行

df[df["Sex"].isin(["male"])]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44684.html

相关文章

  • 我是如何入门机器学习的呢

    摘要:在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。相关学习链接,,入门后的体验在入门了机器学习之后,在实际工作中,绝大多数的情况下你并不需要去创造一个新的算法。 机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。 PS:这篇文章...

    ShowerSun 评论0 收藏0
  • 我是如何入门机器学习的呢

    摘要:在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。相关学习链接,,入门后的体验在入门了机器学习之后,在实际工作中,绝大多数的情况下你并不需要去创造一个新的算法。 机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。 PS:这篇文章...

    Donald 评论0 收藏0
  • 我是如何入门机器学习的呢

    摘要:在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。相关学习链接,,入门后的体验在入门了机器学习之后,在实际工作中,绝大多数的情况下你并不需要去创造一个新的算法。 机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。 PS:这篇文章...

    Bmob 评论0 收藏0
  • 我是如何入门机器学习的呢

    摘要:在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。相关学习链接,,入门后的体验在入门了机器学习之后,在实际工作中,绝大多数的情况下你并不需要去创造一个新的算法。 机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。 PS:这篇文章...

    wua_wua2012 评论0 收藏0
  • Pandas 数据分析处理入门实战案例教程

    摘要:知乎专栏欢迎关注我的知乎专栏基础教程数据处理三中文版来源,张图覆盖了几乎所有常用的用法。 知乎专栏 欢迎关注我的知乎专栏:https://zhuanlan.zhihu.com/geektutu 基础教程 Pandas 数据处理(三) - Cheat Sheet 中文版 来源,2张图覆盖了几乎所有常用的 Pandas 用法。 Pandas_Cheat_Sheet_中文版.pdf 下载...

    alanoddsoff 评论0 收藏0

发表评论

0条评论

hedge_hog

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<