pandas复盘
1. 我这种新手对于pandas的初步理解。Pandas 是 Python 里专门用来处理“表格数据”的超级工具包。对于新手小白可以把它理解为Python 版本的 Excel而且比 Excel 强大得多。只要是你能在 Excel 表格里看到的操作——筛选、排序、求和、分组统计、合并表格——Pandas 都能用几行代码轻松搞定而且能处理 Excel 处理不了的超大数据几百万行都不卡顿。2. 学完pandas代码后对pandas一些应用的记录1.打开文件food_info pandas.read_csv(food_info.csv)此时是将food_info.csv这个文件打开并将表格数据全部读入到 food_info以后要对这个文件里面的数据进行操作时用到的就是food_info。2查看文件数据可用到的操作a. 查看前几行food_info.head(“在这里填写要看前面多少行”)b. 查看后几行food_info.tail(“在这里填写要看后面多少行”)c. 列名显示food_info.columns显示所有列的名字d. 行列总数显示food_info.shape显示一个行数列数e. 读出某一行数据food_info.loc[“输入要读的行号”]或者food_info.loc[起始行号 : 终止行号]orfood_info.loc[输入一个列表] 列表是[235]这种 f: 读出某一列数据food_info[带双引号的列名]food_info[输入一个列表] 列表是[235]这种 food_info .loc[83,Age]Age这一列第83行3对文件数据的操作a: 当不知道列名时提取出所有列名制成一个列表food_info.columns.tolist()food_info代表的是“整张表格”包含所有行和所有列的数据,而.columns是专门用来提取“表格的标题行列名”的属性。b. 判断某一列以什么结尾c.endswith((g))看看c这一列是不是以(g)结尾c. 把指定的元素在这里是c放到列表的最后一个位置末尾gram_columns.append(c)将元素c放在列表 gram_columns 末尾4列的运算 and 列的操作a. 添加一列food_info[要创造出的那一列列名] food_info[Iron_(mg)] / 1000b. 某一列取最值food_info[某一列列名].max()或者food_info[某一列列名].min()c. 某一列的排序food_info.sort_values(列名,inplaceTrue/False,ascendingFalse/True)(ascendingFalse这个说明从大到小排无则默认从小到大排inplaceTrue的意思是直接在原数据上动手直接在原表格上修改而不是复印一份再改。 )3. 在泰坦尼克号里面还有一些pandas的用法titanic_survival pd.read_csv(titanic_train.csv)#打开泰坦尼克号文件1.判断某一个里面的数值是否有空值age_is_null pd.isnull ( titanic_survival[Age] )age_is_null 它是一个 Pandas 的 Series序列里面装着一堆True和False布尔值普通列表只有一排数据比如[False, True, False]没有名字没有编号。Pandas Series现在的age_is_null它不仅有数据True/False它还给每个数据配了一个“座位号索引 index”。2.测量长度的函数len()第一类Python 自带的原生类型闭着眼睛都能用类型示例len()返回什么生活类比字符串strlen(你好啊)3字符个数数几个字列表listlen([1, 2, 3])3元素个数数购物清单几项元组tuplelen((1, 2))2数坐标点有几个数字典dictlen({a:1, b:2})2键值对个数数有几个键集合setlen({1, 2, 3})3元素个数数有几种水果第二类Pandas 和 NumPy必须记住的区别类型示例len()返回什么极易误解的地方Pandas Series一列len(某一列)行数即元素的个数和列表一样数这一列有多长Pandas DataFrame表格len(某表格)行数即表格有几行⚠️不是总格子数比如 5行×3列的表格len()只返回5而不是 15NumPy 数组ndarraylen(np.array([1,2,3]))3第一维的大小如果是二维数组len()返回行数跟 DataFrame 一样3.计算某一列平均数只掌握这一招 correct_mean_age titanic_survival [ Age ] .mean()4.数据透视表.pivot_tableindex..., values..., aggfunc...如port_stats titanic_survival.pivot_table(indexEmbarked, values[Fare,Survived], aggfuncsum)passenger_survival titanic_survival.pivot_table(index以什么分组, values只关心哪几列数据, aggfunc算那一列的什么东西)aggfunc mean表示 算平均数不写 aggfunc 这个默认算平均值aggfuncmax表示 算最大值aggfuncsum表示 算总和5.丢弃缺失的 行或列.dropna new_titanic_survival titanic_survival.dropna ( axis0, subset[Age, Sex] )“只看‘年龄Age’和‘性别Sex’这两列只要这两列里有任何一个人的信息是空的就把这个人整行扔掉其余列比如船舱号即使有空值也不管它保留4. pandas中的函数1.重置索引.reset_indextitanic_reindexed new_titanic_survival. reset_index ( dropTrue )dropTrue这是最关键的地方意思是“丢弃旧的索引不要把旧索引当成一列数据保留下来”。dropFalse默认情况如果你写成 reset_index(dropFalse)Pandas 会把旧的索引比如88, 32, 5...作为新索引。2.行列坐标定位器df.iloc[ 行的位置, 列的位置 ]titanic_survival.iloc[0:5, 0:3]重点左闭右开0:5取不到第 5 行只到索引 40:3取不到第 3 列只到索引 2。这和range(5)的逻辑完全一样3.自定义函数column_null_count titanic_survival. apply(not_null_countaxis 1)apply( )是调用函数其中 not_null_count 这一个是我们自己定义的函数将表格文件 titanic_survival 中的一列一列axis 0 或 没写或者 一行一行axis 1的喂给自定义函数 not_null_count然后经由 not_null_count 处理完后的数据全部由 column_null_count 这个Series变量接受