- 1 使用pandas读取数据
- 1.1 panda读取csv文件
- 1.2 pandas显示读取的csv文件数据的开头几行 head(n)
- 1.3 pandas显示读取的csv文件数据的结尾几行 tail(n)
- 1.4 获取读取csv文件的头head(样本的属性)和所有样本的shape
- 1.5 data_info.loc[n]取出指定的样本(第几行数据)
- 1.5.1 pandas获取指定某一行的数据
- 1.5.2 获取指定连续的多行数据
- 1.5.3 获取指定不连续的多行数据
- 1.5.4 pandas中常见的数据类型
- 1.6 获取样本的某一列数据(所有样本的某一属性/特征值)
- 1.6.1 获取指定的某一列数据
- 1.6.2 获取指定的多列数据
- 1.6.3 过滤出指定的某些列的数据
- 2 自己定义pandas类型的数据 和 保存pandas数据
- 2.1 通过字典定义一个Dateframe数据
- 2.2 通过numpy的ndarray数组定义一个Dataframe数据
- 2.3 把数据保存成csv文件
- 2.4 把数据保存成xlsx文件
- 2.5 pandas把数据保存其他更多格式
- 3 对pandas的列进行计算等 *** 作
- 3.1 获取某一列的数据进行 *** 作
- 3.1.1 获取某一列的数据进行 *** 作
- 3.1.2 获取某一列的数据进行 *** 作,并同步修改到整个读取的数据中
- 3.2 对某两列数据合并到一起,并添加新的列
- 3.2.1 对某两列的数据进行计算 *** 作
- 3.2.2 把某两列进行一定组合,生成新的一列
- 3.2 对某一列的数据进行归一化 *** 作
- 3.3 查看计算某一列数据还有哪些常用的API
- 3.4 对pandas的某一列数据进行排序
- 4 使用pandas分析泰坦尼克号船员获救数据
- 4.1 查看泰坦尼克号数据某一列缺失值NaN的个数
- 4.2 求泰坦尼克船员数据年龄的平均值
- 4.2.1 先过滤掉年龄列中的缺失值
- 4.2.2 通过pandas内置的API直接计算某一列的平均值
- 4.3 计算每个船舱等级船票的平均价格和平均年龄
- 4.3.1 通过循环计算实现:计算每个船舱等级船票的平均价格
- 4.3.2 通过pd的内置函数pivot_table():计算每个船舱等级船票的平均价格
- 4.3.3 通过pd的内置函数pivot_table():计算每个船舱等级中的平均年龄
- 4.3.4 计算一个量和其他多个量之间的关系
- 4.4 丢弃含有NaN值的列 或 行
- 4.5 定位获取到 表格中的某行或某列中的元素
- 4.7 定义一个函数,然后使用appley()将其应用到我们的Dataframe数据结构上
- 5 pandas中的另外一种数据结构Series
pandas主要用于做数据预处理。pandas底层是基于numpy实现的,因此numpy可能好几行才能实现的功能,pandas可能一行代码就能够搞定!
CSV:Comma-Separated Values是以逗号为分隔符的文件,你可以在电脑上用Excel软件直接打开
food_info.csv
- 第一行是title(或 header)
- 从第二行开始,每一行表示一个样本
- 每列表示每种食物含有维生素、蛋白质等营养成分的含量,就相当于是样本的属性 或 特征
- 我们就把自己的CSV文件当作一个矩阵或表格去理解就可以!
import pandas food_info = pandas.read_csv("food_info.csv") print(type(food_info)) print(food_info.shape) print(food_info.dtypes) # print(help(pandas.read_csv))
输出结果:
(8618, 36) NDB_No int64 Shrt_Desc object Water_(g) float64 Energ_Kcal int64 Protein_(g) float64 Lipid_Tot_(g) float64 Ash_(g) float64 Carbohydrt_(g) float64 Fiber_TD_(g) float64 Sugar_Tot_(g) float64 Calcium_(mg) float64 Iron_(mg) float64 Magnesium_(mg) float64 Phosphorus_(mg) float64 Potassium_(mg) float64 Sodium_(mg) float64 Zinc_(mg) float64 Copper_(mg) float64 Manganese_(mg) float64 Selenium_(mcg) float64 Vit_C_(mg) float64 Thiamin_(mg) float64 Riboflavin_(mg) float64 Niacin_(mg) float64 Vit_B6_(mg) float64 Vit_B12_(mcg) float64 Vit_A_IU float64 Vit_A_RAE float64 Vit_E_(mg) float64 Vit_D_mcg float64 Vit_D_IU float64 Vit_K_(mcg) float64 FA_Sat_(g) float64 FA_Mono_(g) float64 FA_Poly_(g) float64 Cholestrl_(mg) float64 dtype: object
输出结果分析:
1、read_csv():读取后数据的类型为Dateframe,可以暂时理解为矩阵
2、shape结果:(8618, 36),表示有8618个样本(不包括第一行的header),36列,表示每个样本有36个属性/特征
3、print(food_info.dtypes):输出的是每一列数据的类型,object类型可以理解为是字符串string类型!
4、最后一个dtype: object表示是读取的整个数据的数据类型,我们使用的是dtypes查看的数据类型,而不是type
1.2 pandas显示读取的csv文件数据的开头几行 head(n)import pandas food_info = pandas.read_csv("food_info.csv") food_info.head() # food_info.head(3)
显示结果如下:
- 默认food_info.head()是显示前五条数据
- 也可以自己指定显示多少行数据
- 注意:从最左边可以看出,样本的索引是从0开始的
import pandas food_info = pandas.read_csv("food_info.csv") food_info.tail(4)1.4 获取读取csv文件的头head(样本的属性)和所有样本的shape
import pandas food_info = pandas.read_csv("food_info.csv") # 使用columns属性,获取表格的列表 heads = food_info.columns print(heads) print(heads[0:3]) print(list(heads[0:3])) print(food_info.shape)
输出结果:
1.5 data_info.loc[n]取出指定的样本(第几行数据)- 获取样本数据,即第几行数据,是通过样本的索引获取的
- 样本的索引是从0开始的
- 在pandas中取出某一行的数据是通过loc进行实现的
- 注意:第一个样本的索引是从0开始的,并不包括开头的title
import pandas food_info = pandas.read_csv("food_info.csv") print(food_info.loc[0])
food_info.loc[8620]
注意:
如果索引超过了,就会报错:KeyError
1.5.2 获取指定连续的多行数据1、如下,是取索引为3-6的样本数据,使用冒号隔开:
import pandas food_info = pandas.read_csv("food_info.csv") food_info.loc[3:6]
2、获取结果如下
1、对于获取不连续的多行数据,需要传入对应行索引的列表,有两种写法:
import pandas food_info = pandas.read_csv("food_info.csv") # 写法1 # two_five_ten = [2,5,10] # food_info.loc[two_five_ten] # 写法2 food_info.loc[[2, 5, 10]]
2、获取结果如下
1.5.4 pandas中常见的数据类型1、pandas中常见的数据类型
- object - 字符串string类型的值
- int` - 整型值 integer values
- float - 浮点值 float values
- datetime - 时间值 time values
- bool - 布尔值 Boolean values
2、查看数据的类型使用dtypes
print(food_info.dtypes)1.6 获取样本的某一列数据(所有样本的某一属性/特征值)
- 获取pandas的某一列数据,是根据列名进行获取的
1、直接根据列名获取即可
import pandas food_info = pandas.read_csv("food_info.csv") # 先查看列名 print(food_info.columns) ndb_col = food_info["NDB_No"] print(ndb_col)
2、获取结果如下:
1、获取指定的多列数据,也是传入一个列名的列表即可
import pandas food_info = pandas.read_csv("food_info.csv") # 写法1: # columns = ["Zinc_(mg)", "Copper_(mg)"] # zinc_copper = food_info[columns] # print(zinc_copper) # 写法2: zinc_copper = food_info[["Zinc_(mg)", "Copper_(mg)"]] print(zinc_copper)
2、获取结果如下:
1、过滤出指定的某些列的数据
import pandas food_info = pandas.read_csv("food_info.csv") # 获取列名 print(food_info.columns) # 获取前两行的样本数据 # print(food_info.head(2)) # 把获取的列名转换为列表list类型 col_names = food_info.columns.tolist() # 也可以直接用list转换 col_names = list(food_info.columns) print(col_names) # 过滤出列名中以克g为单位的列名 gram_columns = [] for c in col_names: if c.endswith("(g)"): gram_columns.append(c) # 然后只取单位为g的前三列数据 gram_df = food_info[gram_columns] print(gram_df.head(3))
2、过滤结果
2 自己定义pandas类型的数据 和 保存pandas数据 2.1 通过字典定义一个Dateframe数据1、通过字典定义一个Dataframe的数据
import pandas as pd data_dict = {'col1': [1, 2], 'col2': [3, 4]} df = pd.Dataframe(data=data_dict) print(df) print("*"*50) print(df.dtypes)
2、构造数据结果
1、通过numpy的ndarray定义一个Dataframe的数据
import pandas as pd df2 = pd.Dataframe(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c']) print(df2) print("*"*50) print(df2.dtypes)
2、构造数据结果
1、使用to_csv()把数据保存成CSV文件
有很多参数,自己去参考API吧,我只说一个:
- index=True:默认是为True,会把每行的索引也保存下来,但是我们一般保存的CSV文件是不需要保存索引的,直接设置为False吧
import pandas as pd df2 = pd.Dataframe(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c']) print(df2) print("*"*50) print(df2.dtypes) df2.to_csv("create_data.csv")
2、生成create_data.csv文件结果
1、使用to_excel()把数据保存成CSV文件
import pandas as pd df2 = pd.Dataframe(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c']) print(df2) print("*"*50) print(df2.dtypes) df2.to_excel("create_data.xlsx")
to_excel()还有一些其他参数,例如:df2.to_excel(‘out.xlsx’,sheet_name=“sheetname”,index=False)
- 第一个参数是保存文件名,不能为空
- sheet_name:设置excel文件脚注
- index=False:不将索引写入到文件中,我们一般保存数据是不需要列的索引的
2、生成create_data.xlsx文件结果
2.5 pandas把数据保存其他更多格式1、参考
- df.to_json():保存成json文件
- df.to_html():保存成html文件
- 我们已经知道了,pandas中的某一列,就是样本的某一个属性 / 特征
- 我们需要对列数据比如做单位转换,比如从单位g转换为mg,多列数据合并生成新的一列数据作为新的特征
1、如下是获取"Iron_(mg)"这一列的数据,并对该列的数据除以1000的 *** 作
import pandas food_info = pandas.read_csv("food_info.csv") # 先获取"Iron_(mg)"列数据 print(food_info["Iron_(mg)"]) # 对"Iron_(mg)" 这一列的所有数据都除以1000 # 注意:这里只是拿到这一列的数据进行 *** 作,并没有修改到food_info中 div_1000 = food_info["Iron_(mg)"] / 1000 print(div_1000) print(food_info["Iron_(mg)"])
2、获取结果
3、当然还可以对获取到的某一列数据,进行一些其他你想要进行的任何计算 *** 作
# 对"Iron_(mg)"列的每一个值都加上100 add_100 = food_info["Iron_(mg)"] + 100 # 对"Iron_(mg)"列的每一个值都减去100 sub_100 = food_info["Iron_(mg)"] - 100 # 对"Iron_(mg)"列的每一个值都乘以2 mult_2 = food_info["Iron_(mg)"]*23.1.2 获取某一列的数据进行 *** 作,并同步修改到整个读取的数据中
1、同步修改数据到整个数据中
import pandas food_info = pandas.read_csv("food_info.csv") # 先获取"Iron_(mg)"列数据 print(food_info["Iron_(mg)"]) # 对"Iron_(mg)" 这一列的所有数据都除以1000 # 注意:这里只是拿到这一列的数据进行 *** 作,并没有修改到food_info中 div_1000 = food_info["Iron_(mg)"] / 1000 print(div_1000) # 如果要让food_info的"Iron_(mg)"的这一列数据也同步修改,可以对这一列进行重新赋值 food_info["Iron_(mg)"] = div_1000 print(food_info["Iron_(mg)"])
2、修改结果如下:
- 对某两列的数据进行计算 *** 作,必须保证两列的数据维度是一样的
- 比如让某两列的数据相乘,就是对应位置的元素值相乘
1、比如我们计算如下的两列数据,让这两列数据相乘
import pandas food_info = pandas.read_csv("food_info.csv") print(food_info.head(3)) water_energy = food_info["Water_(g)"] * food_info["Energ_Kcal"] print(water_energy)
2、相乘之后的结果
1、比如,我们认为"Water_(g)"和"Energ_Kcal"这两列数据存在一定的联系,可以组合出新的一个特征
import pandas food_info = pandas.read_csv("food_info.csv") print(food_info.head(3)) water_energy = food_info["Water_(g)"] * food_info["Energ_Kcal"] iron_grams = food_info["Iron_(mg)"] / 1000 food_info["Iron_(g)"] = iron_grams print(food_info.head(3))
2、组合后的结果,如下可以看出food_info已经多了一列数据"Iron_(g)"
3.2 对某一列的数据进行归一化 *** 作从上面的例子,我们只要知道:
- 怎样拿到某一列的数据
- 怎样对某一列的数据进行计算
这样我们就可以,对数据进行很多的 *** 作,现在我们再举个例子,如何对某一列的数据进行归一化 *** 作
1、对某一列的数据进行归一化 *** 作
import pandas food_info = pandas.read_csv("food_info.csv") # 先找出某一列的最大值 max_calories = food_info["Energ_Kcal"].max() # 然后该列的每个值都除以最大值 normalized_calories = food_info["Energ_Kcal"] / max_calories normalized_protein = food_info["Protein_(g)"] / food_info["Protein_(g)"].max() normalized_fat = food_info["Lipid_Tot_(g)"] / food_info["Lipid_Tot_(g)"].max() # 再把归一化后的值 赋值 到对应的列上去 food_info["Normalized_Protein"] = normalized_protein food_info["Normalized_Fat"] = normalized_fat3.3 查看计算某一列数据还有哪些常用的API
1、使用dir()函数进行查看
'abs', 'add', 'add_prefix', 'add_suffix', 'agg', 'aggregate', 'align', 'all', 'any', 'append', 'apply', 'argmax', 'argmin', 'argsort', 'array', 'asfreq', 'asof', 'astype', 'at', 'at_time', 'attrs', 'autocorr', 'axes', 'between', 'between_time', 'bfill', 'bool', 'clip', 'combine', 'combine_first', 'convert_dtypes', 'copy', 'corr', 'count', 'cov', 'cummax', 'cummin', 'cumprod', 'cumsum', 'describe', 'diff', 'div', 'divide', 'divmod', 'dot', 'drop', 'drop_duplicates', 'droplevel', 'dropna', 'dtype', 'dtypes', 'duplicated', 'empty', 'eq', 'equals', 'ewm', 'expanding', 'explode', 'factorize', 'ffill', 'fillna', 'filter', 'first', 'first_valid_index', 'floordiv', 'ge', 'get', 'groupby', 'gt', 'hasnans', 'head', 'hist', 'iat', 'idxmax', 'idxmin', 'iloc', 'index', 'infer_objects', 'interpolate', 'is_monotonic', 'is_monotonic_decreasing', 'is_monotonic_increasing', 'is_unique', 'isin', 'isna', 'isnull', 'item', 'items', 'iteritems', 'keys', 'kurt', 'kurtosis', 'last', 'last_valid_index', 'le', 'loc', 'lt', 'mad', 'map', 'mask', 'max', 'mean', 'median', 'memory_usage', 'min', 'mod', 'mode', 'mul', 'multiply', 'name', 'nbytes', 'ndim', 'ne', 'nlargest', 'notna', 'notnull', 'nsmallest', 'nunique', 'pct_change', 'pipe', 'plot', 'pop', 'pow', 'prod', 'product', 'quantile', 'radd', 'rank', 'ravel', 'rdiv', 'rdivmod', 'reindex', 'reindex_like', 'rename', 'rename_axis', 'reorder_levels', 'repeat', 'replace', 'resample', 'reset_index', 'rfloordiv', 'rmod', 'rmul', 'rolling', 'round', 'rpow', 'rsub', 'rtruediv', 'sample', 'searchsorted', 'sem', 'set_axis', 'shape', 'shift', 'size', 'skew', 'slice_shift', 'sort_index', 'sort_values', 'squeeze', 'std', 'sub', 'subtract', 'sum', 'swapaxes', 'swaplevel', 'tail', 'take', 'to_clipboard', 'to_csv', 'to_dict', 'to_excel', 'to_frame', 'to_hdf', 'to_json', 'to_latex', 'to_list', 'to_markdown', 'to_numpy', 'to_period', 'to_pickle', 'to_sql', 'to_string', 'to_timestamp', 'to_xarray', 'transform', 'transpose', 'truediv', 'truncate', 'tshift', 'tz_convert', 'tz_localize', 'unique', 'unstack', 'update', 'value_counts', 'values', 'var', 'view', 'where', 'xs'3.4 对pandas的某一列数据进行排序
-
NaN是缺失值,无论是按照升序还是降序盘排列, NaN值都是排到最后
-
ascending=False是按照降序排列,即从大到小排列,默认ascending=True是升序排列的(从小到大排列)
1、分别对某一列进行升序和降序排列
import pandas food_info = pandas.read_csv("food_info.csv") print(food_info["Sodium_(mg)"]) print("*"*50) # inplace为True,排序之后,会在food_info中会把排序后的Sodium_(mg)列替换原先的列 # 默认 ascending为True,表示按升序排列(从小到大排列) food_info.sort_values("Sodium_(mg)", inplace=True) print(food_info["Sodium_(mg)"]) print("*"*50) # ascending为False,表示按降序排列(从大到小排列) food_info.sort_values("Sodium_(mg)", inplace=True, ascending=False) print(food_info["Sodium_(mg)"])
注意:
如果要对多列进行排序,也可以传入的第一个参数为多个列名的列表
2、排序结果如下:
4 使用pandas分析泰坦尼克号船员获救数据1、在开始之前,我们先来介绍一下泰坦尼克号船员获救数据数据,该数据一共包含891行(rows),12列(columns),即:
- 一共有891个样本
- 每个样本有12个属性特征
2、泰坦尼克号船员获救数据数据的12个列名分别为:
- Passengerid:每个人都会有一个这样的编号
- Survived:要么是0,要么是1,表示label值,是否获救
- Pclass:表示船舱的等级
- Name:乘客的名字
- Sex:性别
- Age:年龄
- SibSp:兄弟姐妹的数量
- Parch:老人和孩子的数量
- Ticket:船票的编码
- Fare:船票的价格
- Cabin:船舱的编号,当前列缺失值比较多,一般在数据分析的时候也不会用到
- Embarked:乘客登船的地点
3、先来查看一下前五行数据
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # print(titanic_survival) titanic_survival.head()4.1 查看泰坦尼克号数据某一列缺失值NaN的个数
1、获取泰坦尼克号某一列中缺失值的个数
- 使用pd.is_null()判断某一列中所有元素是否为缺失值NaN
- 如果为缺失值,则返回True,否则返回False
- 缺失值NaN在Execl中是显示为空的
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") age = titanic_survival["Age"] # 从打印的结果可以看到,在Age这一列是存在缺失值NaN的 print(age.loc[0:8]) print("*"*50) # 对age这一列的每个元素进行缺失值判断,如果是缺失值返回True,否则返回False age_is_null = pd.isnull(age) print(age_is_null[0:8]) print("*"*50) # 根据上面得到的布尔索引值,因为True值为NaN,所以可以取出age这一列所有的NaN值 age_null_true = age[age_is_null] print(age_null_true) # 获取Age这一列一共有多少个缺失值 age_null_count = len(age_null_true) print(age_null_count)4.2 求泰坦尼克船员数据年龄的平均值
1、直接计算平均年龄
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") age = titanic_survival["Age"] # 平均年龄 = 总的年龄之和 / 样本个数 mean_age = sum(titanic_survival["Age"]) / len(titanic_survival["Age"]) # 发现得到的平均年龄为NaN,是因为我们没有提前过滤掉缺失值 print(mean_age)
2、计算结果为NaN,因此必须先要过滤掉年龄列中的缺失值NaN
4.2.1 先过滤掉年龄列中的缺失值1、先过滤掉年龄列中的缺失值
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") age = titanic_survival["Age"] age_is_null = pd.isnull(age) # 取出“Age”列中,不为NaN的年龄值 good_ages = titanic_survival["Age"][age_is_null == False] print(good_ages) # 此时再计算平均年龄 correct_mean_age = sum(good_ages) / len(good_ages) print(correct_mean_age)
2、计算结果
4.2.2 通过pandas内置的API直接计算某一列的平均值1、pandas在计算平均值的时候,会自动过滤掉NaN值
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") age = titanic_survival["Age"] # pandas在计算平均值的时候,会自动过滤掉NaN值 correct_mean_age = titanic_survival["Age"].mean() print(correct_mean_age)
2、计算结果
注意:
4.3 计算每个船舱等级船票的平均价格和平均年龄 4.3.1 通过循环计算实现:计算每个船舱等级船票的平均价格其实,我们在实际处理数据计算平均值的时候不一定要把缺失值过滤掉,而是通过平均值或中位数等的方式填充缺失值NaN
1、计算每个船舱等级船票的平均价格
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # Pclass船舱有三个等级:一等舱、二等舱、三等舱 passenger_classes = [1, 2, 3] # 定义每个等级船舱平均加个的字典 fares_by_class = {} for this_class in passenger_classes: pclass_rows = titanic_survival[titanic_survival["Pclass"] == this_class] # 拿到对应的船舱等级之后,再去取对应船舱等级对应的船舱价格 “Fare ” pclass_fares = pclass_rows["Fare"] #print(pclass_fares) # 计算某一等级船舱的平均价格 fare_for_class = pclass_fares.mean() fares_by_class[this_class] = fare_for_class print(fares_by_class)
2、计算结果
4.3.2 通过pd的内置函数pivot_table():计算每个船舱等级船票的平均价格1、pivot_table()映射表
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # 计算每个船舱等级中,船票的平均价格 # 三个船舱等级就相当于是三个类别 # 然后计算每个类别中船票的平均值, 因此 valuse=“Fare”,表示我们要计算的数是对应的Age passenger_age = titanic_survival.pivot_table(index="Pclass", values="Age") print(passenger_age)
2、计算的结果,可以看到和上面我们通过循环计算的是一致的
1、同上面一样
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # 计算每个船舱等级中,年龄的平均值 # 三个船舱等级就相当于是三个类别 # 然后计算每个类别中年龄的平均值, 因此 valuse=“Age”,表示我们要计算的数是对应的Age passenger_age = titanic_survival.pivot_table(index="Pclass", values="Age") print(passenger_age)
2、计算结果
- 默认aggfunc=np.mean是求均值的 *** 作
1、登船地点相当于是三个类别,然后求这个三个类别的两个指标数据的求和
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # Embarked乘客登船的地点 # 值是船票的价格Fare 和 获救船员 # 这里的函数就定义为 求 每个登船地点在这两个指标上的数据的求和 port_stats = titanic_survival.pivot_table(index="Embarked", values=["Fare","Survived"], aggfunc=np.sum) print(port_stats)
2、计算结果
1、使用 dropna()丢弃含有NaN值的行和列
- axis=1 或 axis=columns:丢弃含有NaN值的列
- axis=0 :丢弃含有NaN值的行
- subset:则表示指定要丢弃的数据
#specifying axis=1 or axis='columns' will drop any columns that have null values import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # 丢弃含有NaN的列 或者写成 axis=columns drop_na_columns = titanic_survival.dropna(axis=1) # 之前我们的Age是有NaN值的,现在发现只要含有NaN的列,直接就被丢弃了 print(drop_na_columns) print("*"*50) # 丢弃 Age和Sex 中含有NaN数据的行 new_titanic_survival = titanic_survival.dropna(axis=0,subset=["Age", "Sex"]) print(new_titanic_survival)
2、结果:
4.5 定位获取到 表格中的某行或某列中的元素1、获取指定位置的某个值,则需要:
- 样本的索引
- 样本的列名
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # 获取第索引为83的样本,对应的列属性为Age的值 row_index_83_age = titanic_survival.loc[83,"Age"] row_index_1000_pclass = titanic_survival.loc[766,"Pclass"] print(row_index_83_age) print(row_index_1000_pclass) # 获取多个样本,也可以多个属性,通过传入列表 print("*"*50) row_index_83t0100_age = titanic_survival.loc[83: 100,"Age"] print(row_index_83t0100_age)
2、结果
##4.6 对某一列排序之后,再对索引重新排序
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") new_titanic_survival = titanic_survival.sort_values("Age",ascending=False) print(new_titanic_survival[0:3]) # 把索引也重新排序 titanic_reindexed = new_titanic_survival.reset_index(drop=True) print(titanic_reindexed.iloc[0:3])4.7 定义一个函数,然后使用appley()将其应用到我们的Dataframe数据结构上
1、这个函数是获取每一列的第一百个数据
import pandas as pd import numpy as np titanic_survival = pd.read_csv("titanic_train.csv") # 这个函数是获取每一列的第一百个数据 def hundredth_row(column): # 获取每一列的第一百个数据 hundredth_item = column.iloc[99] return hundredth_item # 返回每一列的第一百行数据 hundredth_row = titanic_survival.apply(hundredth_row) print(hundredth_row)
结果:
5 pandas中的另外一种数据结构Series上面我们介绍的数据结构都是Dataframe,我们说Dataframe可以直接看作是一个矩阵或表格类型的数据,那Series又是什么样的数据呢?
- Series:就相当与是矩阵数据中的一行 或 一列
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)