设置pandas显示行数_Pandas使用总结I

设置pandas显示行数_Pandas使用总结I_第1张图片

文 | 菊子皮 (转载请注明出处) 同名B站:AIAS编程有道

前言

Pandas是机器学习三剑客之一,我们知道Numpy能够对数据进行很好的分析、操作、矩阵计算等,Pandas更侧重于数据的处理和分析,它的底层是使用Numpy实现的,在数据处理和分析方面提供了强大的功能。下面就总结一下日常使用操作,以问题的形式罗列。

程序运行环境:window10 Python3.7 (Anaconda) Pandas 1.0.1

编辑工具:jupyter

在日常数据分析中,经常使用的是CSV文件,本文也主要记录该文件的相关处理方式。

(补充:默认的csv文件是以“,”隔开的文本文件,使用excel打开时与xls文件类似)

相关文档可参考:Pandas中文文档[1] 、Pandas英文文档[2]

数据类型

数据预处理是做数据分析、数据挖掘、机器学习等的第一步。下面以泰坦尼克号乘客信息数据(titanic.csv)数据集做介绍。部分数据展示可参见对应jupyter数据文件。

通常使用pandas读取数据后会返回一个「DataFrame」数据结构,查看某一列(行)数据的数据类型返回一个「Series」,也就是说DataFrame由Series组成,读取数据是默认把第一行数据当作列名,可将一个DataFrame认为是一个二维数组数据结构。

# 读取数据df = pd.read_csv('titanic.csv')print(type(df))       # # 查看数据df.head()             # 通常使用该方法查看前5条数据df.tail()             # 通常使用该方式查看最后5条数据情况print(type(df['Name']))  # 

问题

「查看数据的基本信息」

DataFrame提供了info()方法,该方法返回DataFrame数据的样本规模、每列数据信息等。展示如下:

df.info()"""RangeIndex: 891 entries, 0 to 890Data columns (total 12 columns): #   Column       Non-Null Count  Dtype  ---  ------       --------------  -----   0   PassengerId  891 non-null    int64   1   Survived     891 non-null    int64   2   Pclass       891 non-null    int64   3   Name         891 non-null    object  4   Sex          891 non-null    object  5   Age          714 non-null    float64 6   SibSp        891 non-null    int64   7   Parch        891 non-null    int64   8   Ticket       891 non-null    object  9   Fare         891 non-null    float64 10  Cabin        204 non-null    object  11  Embarked     889 non-null    object dtypes: float64(2), int64memory usage: 83.7+ KB"""

从结果中可以看出,数据891个实体,默认每一行为一个实体,一共12列,每列的信息也有所展示,例如对应的数据类型,object说明该数据类型为字符串,该文件在读到内存的大小等。

「查看数据的统计信息」

DataFrame提供了describe()方法,可以查看数据的个数、均值、标准差、最大值、最小值等信息。也可从中看出数据是否存在问题。

df.describe()

「查看某列各属性个数」

# 查看是否存活的个数df['Survived'].value_counts()# 指定按照个数从少到多排序df['Survived'].value_counts(ascending=True)# 对于其它具有更多类的数据可以分段显示,参数:bins = n,表示将连续的数据分为5组显示

「获取数据的列名」

df.columns   # columns为其属性,不是一种方法"""Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],      dtype='object')"""

「获取数据的索引」

df.index"""RangeIndex(start=0, stop=891, step=1)"""

「获取每列数据对应的数据类型」

df.dtypes"""PassengerId      int64Survived         int64Pclass           int64Name            objectSex             objectAge            float64SibSp            int64Parch            int64Ticket          objectFare           float64Cabin           objectEmbarked        objectdtype: object"""

「将DataFrame数据类型转为Numpy类型」

df.values  # np.array(df) 也可"""array([[1, 0, 3, ..., 7.25, nan, 'S'],       [2, 1, 1, ..., 71.2833, 'C85', 'C'],       [3, 1, 3, ..., 7.925, nan, 'S'],       ...,       [889, 0, 3, ..., 23.45, nan, 'S'],       [890, 1, 1, ..., 30.0, 'C148', 'C'],       [891, 0, 3, ..., 7.75, nan, 'Q']], dtype=object)"""

「获取某列数据」

names = df['Name']   # 获取列名为Name的一列数据names[:5]            #  names.values[:5]  # 返回前5行np格式数据"""0                              Braund, Mr. Owen Harris1    Cumings, Mrs. John Bradley (Florence Briggs Th...2                               Heikkinen, Miss. Laina3         Futrelle, Mrs. Jacques Heath (Lily May Peel)4                             Allen, Mr. William HenryName: Name, dtype: object"""

「设置df中某一列为索引」

df = df.set_index('Name')  # 设置'Name'列为数据的索引df.index                   # 查看新索引, 也可使用df.head()查看新的df数据"""Index(['Braund, Mr. Owen Harris',       'Cumings, Mrs. John Bradley (Florence Briggs Thayer)',       ...       'Johnston, Miss. Catherine Helen "Carrie"', 'Behr, Mr. Karl Howell',       'Dooley, Mr. Patrick'],      dtype='object', name='Name', length=891)"""

「通过索引定位某个具体值」

# 查看名字为"Braund, Mr. Owen Harris"的人存活情况survived = df['Survived']            # 获取存活列(已经设置Name为索引列了)survived['Braund, Mr. Owen Harris']  # 0

「二维数组数据块截取和赋值」

  • 使用列名和行号获取
# 截取'Age'、'Fare'两列中第1,3,5,7,9行数据(行数从0开始)df[['Age', 'Fare']][1:10:2]

「注:」 Name列为索引列,不可截取,或已经有对应关系了。

  • 使用行号和列号获取(切片)
# 获取第0行数据print(df.iloc[0])# 获取第0行,前5列数据print(df.iloc[0,0:5])# 获取 前10中中偶数行,奇数列的数据print(df.iloc[0:11:2,1::2])   # 说明0:11:2,从0开始到11,每次2个递增
  • 使用标签截取数据
# 获取名为'Braund, Mr. Owen Harris'行数据,Name已设置为索引df.loc['Braund, Mr. Owen Harris']   # 获取名为'Braund, Mr. Owen Harris'行中'Survied'属性df.loc['Braund, Mr. Owen Harris', 'Survived'] # 也可以使用“:”连接切片开始和结束位置df.loc['Braund, Mr. Owen Harris':'Allen, Mr. William Henry']  # 两个姓名索引之间的行
  • 对于获取的数据可以使用等号对其进行赋值修改。
  • 根据条件获取数据(使用bool类型)
# 获取所有年龄大于35的男性的前5条数据的平均年龄res_df = df[df['Sex'] == 'male']res_df[res_df['Age'] > 35][:5]['Age'].mean()

补充:pandas中对于df还有求平均值,求和等计算方法。

「创建DataFrame数据」

通过字典创建DataFrame数据

# key表示列名,value表示对应列的数据data = {'A':[1,2,3],       'B':['a','b','c']}df_create = pd.DataFrame(data)

属性分离创建DataFrame数据

# 两行数据data = [[i for i in range(5)], [i for i in range(5, 10)]]  cols_name = [i for i in 'abcde']  # 两列数据对应的列名index = ['A', 'B']  # 索引df_create = pd.DataFrame(data, index=index, columns=cols_name)

「设置显示数据最大行数」

pd.get_option('display.max_rows')  # 查看当前能够显示数据最大行数pd.set_option('display.max_rows', 10)  # 设置能够显示数据的最大行数

「创建一个Series」

col = [i for i in range(5)]s = pd.Series(data=col)   # 使用默认索引# s = pd.Series(data=col,index=[i for i in 'abcde']) # 自定义索引

补充:获取Series值和索引的操作与DataFrame相似,可使用loc、iloc方法,index方法。

「对某列数据进行+、-、x、\等操作」

# 对Fare的值进行计算df['Fare'] = (df['Fare'] + 10 - 5)*2 / 5

「查看各列数据之间的协方差」

df.cov()  # 返回各列之间的协方差df

「查看各列数据之间的相关性」

df.corr()   # 返回各列之间的相关系数df

后记

由于内容较多,则将问题内容分批发送,敬请关注!

Reference

[1]

中文文档: https://www.pypandas.cn/docs/

[2]

Pandas英文文档: https://pandas.pydata.org/docs/index.html

1ea4963b91c42733f55dfee8d87e1955.gif

设置pandas显示行数_Pandas使用总结I_第2张图片

4bf34ea945def48dfa0db54cd3e8fa19.gif

剑指Offer刷题集| Python基础

设置pandas显示行数_Pandas使用总结I_第3张图片

你可能感兴趣的:(设置pandas显示行数)