1.a = pandas.read_csv(filepath):读取.csv格式的文件到列表a中,文件在路径filepath中

  pandas.core.frame.DataFrame是pandas的核心结构

  b = a.head(n):b中存有文件前n行,默认为5行

  b = a.tail(n):b中存有文件后n行,默认为5行

 import pandas as pd

 food_info = pd.read_csv("C:/Users/娄斌/Desktop/.ipynb_checkpoints/food_info.csv")
print(type(food_info))
a = food_info.head()
b = food_info.tail(3)
print(a)
print(b)

2.pandas索引与计算。

  设a为DataFram类型。

  •   a.loc[n]表示提取a的第 n行;a.loc[n:m]表示提取a的n到m行,当然,还可以用列表作为索引。
  •   a['name']表示提取列名为"name"的列。
  •   加减乘除和numpy的向量一样。
  •   a.columns.tolist()将所有的列名存储在一个向量中
  • a['name'].max()可以取出该列的最大值。
 import pandas as pd

 food_info = pd.read_csv("C:/Users/娄斌/Desktop/.ipynb_checkpoints/food_info.csv")
print(food_info.loc[3:5])
print(food_info["NDB_No"].head(3))
print(food_info["Water_(g)"].max())

运行结果如下

下面的代码是将所有的单位是g的列找出来,并转化为mg,然后求和并加入a中。

 import pandas as pd

 food_info = pd.read_csv("C:/Users/娄斌/Desktop/.ipynb_checkpoints/food_info.csv")
columns = food_info.columns.tolist()
gram_c = []
for c in columns:
if c.endswith("(g)"):
gram_c.append(c)
print(food_info[gram_c].head(3))
food_info[gram_c] = food_info[gram_c]/1000
print(food_info[gram_c].head(3)) food_info["sum(mg)"] = 0
for c in gram_c:
food_info["sum(mg)"] += food_info[c]
print(food_info.head(3))

3.pandas排序和titanic数据集

  sor_value()函数进行排序,当参数inplace = false时,原数据集不变,当inplace = true时,原数据集变成排序后的结果。

  下面的代码是读取titanic_train.csv的数据并按照标签“fare"进行排序,然后读取所有年龄为空的记录,并统计该记录集的长度。

 import pandas as pd

 titanic = pd.read_csv("C:/学习/python/hello/titanic_train.csv")
print(titanic.head(5))
titanic.sort_values("Fare", inplace=True)
print(titanic.head(5)) #将所有年龄为空的记录显示出来并统计个数
age = titanic['Age']
age_is_null_judge = pd.isnull(age)
age_is_null = age[age_is_null_judge]
print(age_is_null)
print(len(age_is_null))

4.数据预处理方法

  计算某一个属性的平均值,下面代码是计算数据集中age属性平均值

 import pandas as pd

 titanic = pd.read_csv("C:/学习/python/hello/titanic_train.csv")
age = titanic['Age']
age_is_null_judge = pd.isnull(age) #isnull函数判断函数的age是否为NaN,如果是则为true,否则为false
new_age = titanic['Age'][age_is_null_judge == False] #注意俩个中括号,一个是属性,一个是判断
mean = sum(new_age) / len(new_age) #sun函数和len函数
print(mean)

  还可以用dropna函数去掉属性为空的记录

 import pandas as pd

 titanic = pd.read_csv("C:/学习/python/hello/titanic_train.csv")
age = titanic['Age'] new_titanic = titanic.dropna(axis=0, subset=['Age']) #subset是一个列表,可以有多个属性
new_age = new_titanic['Age']
print(sum(new_age)/len(new_age))

  以上两段代码的运行结果都是

  29.69911764705882

  下面这几行代码可以访问DataFram中的某行某列的元素

 titanic = pd.reavd_csv("C:/学习/python/hello/titanic_train.csv")
print(titanic.loc[24, 'Age'])

  

  

  可以用pivot_table(index='Pclass', values='Age', aggfunc=np.mean)对数据进行分类统计,例如这里的参数index说明该函数先将所有的记录按照Pclass的不同进行分类,

参数value = ‘Age'说明对于每一类的记录,统计其属性Age, aggfunc = np.mean参数说明对Age属性求平均值。
  下面的代码就是分别统计1,2,3等舱的乘客的平均年龄
 import pandas as pd
import numpy as np
titanic = pd.read_csv("C:/学习/python/hello/titanic_train.csv")
mean_age = titanic.pivot_table(index='Pclass', values='Age', aggfunc=np.mean)
print(mean_age)
  运行结果如下
   利用panddas的sort_value函数可以实现排序,但是排序好的记录的索引值还是原来的索引,即样本不再是从第0行到第n行了,如下图所示

  现在要把索引变成从0到1,只需要利用reset_index()函数


 import pandas as pd
import numpy as np
titanic = pd.read_csv("C:/学习/python/hello/titanic_train.csv")
new_titanic = titanic.sort_values('Age')
new_titanic1 = new_titanic.reset_index()
print(new_titanic.head())
print(new_titanic1.head())

  运行结果如下

  可以用apply(func, axis)函数实现自定义函数,其中第一个参数func是自定义的函数,第二个参数axis=0表示func函数逐列处理数据,axis=1表示逐行处理函数

  如下代码统计每一列的空值个数

  

 import pandas as pd
import numpy as np #统计每个属性的空值个数
titanic = pd.read_csv("C:/学习/python/hello/titanic_train.csv") def nul_count(column):
is_null_judge = pd.isnull(column)
is_null = column[is_null_judge]
return len(is_null) column_null_count = titanic.apply(nul_count, axis=)
print(column_null_count)

  运行结果如下

  以下的代码将年龄离散化成成年人和未成年人

 import pandas as pd
import numpy as np #统计每个属性的空值个数
titanic = pd.read_csv("C:/学习/python/hello/titanic_train.csv") def generate_age_label(row):
age = row['Age']
if pd.isnull(age):
return "unknow"
elif age < :
return "minor"
else:
return "adult" age_labels = titanic.apply(generate_age_label, axis=)
print(age_labels)

  运行结果如下

5.series结构

  设a是DataFram结构,b为a的某一行或者某一列,那么b为Series结构。 c = b.values,那么c为numpy的ndarray结构。如下代码所示

 import pandas as pd
import numpy as np fandango = pd.read_csv("C:/学习/python/hello/fandango_score_comparison.csv")
series_film = fandango["FILM"]
series_rt = fandango["RottenTomatoes"]
print(type(series_film))
print(series_film.head())
film_name = series_film.values
rt_scores = series_rt.values
print(type(rt_scores))
print(rt_scores)

  下面是运行结果

  通过pandas.Series(value, index)函数可以将两个ndarray类型的值组合成一个Series类型,这里index是索引,value是值,如下代码 所示,将电影名和其RontenTomatoes的评分对应起来

 import pandas as pd
import numpy as np fandango = pd.read_csv("C:/学习/python/hello/fandango_score_comparison.csv")
series_film = fandango["FILM"]
series_rt = fandango["RottenTomatoes"] film_name = series_film.values
rt_scores = series_rt.values series_custom = pd.Series(rt_scores, index=film_name)
print(type(series_custom))
print(series_custom)

  运行结果如下

  可以用Series结构按索引排序构造新的Series。如下代码所示

 import pandas as pd
import numpy as np fandango = pd.read_csv("C:/学习/python/hello/fandango_score_comparison.csv")
series_film = fandango["FILM"]
series_rt = fandango["RottenTomatoes"] film_name = series_film.values
rt_scores = series_rt.values series_custom = pd.Series(rt_scores, index=film_name) #对电影名进行排序
origial_index = series_custom.index.tolist() #origial_index是list类型
sorted_index = sorted(origial_index)
new_series_custom = series_custom.reindex(sorted_index)
print(new_series_custom)

  运行结果如下

  以下代码实现将数据表fandango中类型为float64的列保留下来构成新表

 

 import pandas as pd
import numpy as np fandango = pd.read_csv("C:/学习/python/hello/fandango_score_comparison.csv")
types = fandango.dtypes #Series结构,索引是列名,值是该列的数据类型 float_column = types[types.values == 'float64'].index #将类型为float64的列名找出来
print(type(float_column))
print(float_column)
float_df = fandango[float_column]
print(float_df.head())

运行结果如下

  设fandango是Datafram结构,则fandango.columns的数据类型是index,fandango.columns.values的数据类型是ndarray,fandango.columns.values.tolist()的数据类型是list。这个数据类型

关系很重要。还有Datafram的某一行或者某一列为Series结构,Series的values属性是ndarray类型,ndarray结构调用tolist()成为list类型

 import pandas as pd
import numpy as np fandango = pd.read_csv("C:/学习/python/hello/fandango_score_comparison.csv")
columns = fandango.columns
columns_values = columns.values
columns_value_list = columns_values.tolist()
print(type(columns))
print(columns)
print(type(columns_values))
print(columns_values)
print(type(columns_value_list))
print(columns_value_list)

  运行结果如下

  以下代码实现对每个电影的所有评价求方差,并打印出来

 import pandas as pd
import numpy as np fandango = pd.read_csv("C:/学习/python/hello/fandango_score_comparison.csv")
columns = fandango.columns #所有的属性名,index类型
columns_values = columns.values #所有的属性名,ndarray类型
new_fandango = fandango[columns_values[columns_values != 'FILM']] #去掉电影名这一列才能对剩下的列求方差
result = new_fandango.apply(lambda x: np.std(x), axis=) #自定义函数求方差,axis=1表示按行处理,这里的x是Series类型
film_name = fandango['FILM'] #Series类型的电影名
result_std = pd.Series(data=result.values, index=film_name.values)
print(result_std)

  运行结果如下,记住numpy的std函数是可以传入Series类型的参数的,不过要求值全部为数值类型。

6.values属性将表格矩阵化

  设a是datafram类型的数据集,则b = a.values执行后,b是一个矩阵,ndrray类型。

pandas的用法的更多相关文章

  1. pandas基础用法——索引

    # -*- coding: utf-8 -*- # Time : 2016/11/28 15:14 # Author : XiaoDeng # version : python3.5 # Softwa ...

  2. pandas基础用法

    首先生成一维数组 data = pd.Series([1,2,3,4,5,6,7,8,9])data运行结果 data.head()#默认取前五条,当然也可以加参数 data.tail()#默认取前五 ...

  3. pandas.read_csv用法(转)

    的数据结构DataFrame,几乎可以对数据进行任何你想要的操作. 由于现实世界中数据源的格式非常多,pandas也支持了不同数据格式的导入方法,本文介绍pandas如何从csv文件中导入数据. 从上 ...

  4. pandas 基础用法

    pandas 是一个基于 Numpy 构建, 强大的数据分析工具包 主要功能 独特的数据结构 DataFrame, Series 集成时间序列功能 提供丰富的数学运算操作 灵活处理缺失数据 Serie ...

  5. Pandas基础用法-数据处理【全】-转

    完整资料:[数据挖掘入门介绍] (https://github.com/YouChouNoBB/data-mining-introduction) # coding=utf-8 # @author: ...

  6. 【转】Pandas常见用法总结

    关键缩写和包导入 在这个速查手册中,我们使用如下缩写: df:任意的Pandas DataFrame对象 s:任意的Pandas Series对象 raw:行标签 col:列标签 引入响应模块: im ...

  7. 数据分析——Pandas的用法(Series,DataFrame)

    我们先要了解,pandas是基于Numpy构建的,pandas中很多的用法和numpy一致.pandas中又有series和DataFrame,Series是DataFrame的基础. pandas的 ...

  8. python模块之numpy,pandas基本用法

    numpy: 是 Python 的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库简单来说:就是支持一维数组和多维数组的创建和操作,并有丰富的函数库. 直接看例子 ...

  9. Pandas核心用法

    目录 Numpy和Pandas Numpy科学计算 Pandas数据分析 安装jupyter notebook Numpy语法 创建和基本使用 切片索引 布尔索引 对位运算 矩阵的乘除 其他方法 Pa ...

随机推荐

  1. web form 服务器控件表单验证

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ValidationDemo ...

  2. BZOJ 2594: [Wc2006]水管局长数据加强版 (LCT维护最小生成树)

    离线做,把删边转化为加边,那么如果加边的两个点不连通,直接连就行了.如果联通就找他们之间的瓶颈边,判断一下当前边是否更优,如果更优就cut掉瓶颈边,加上当前边. 那怎么维护瓶颈边呢?把边也看做点,向两 ...

  3. log4j.properties通用配置

    一.Log4j的配置文件分类Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties(key=value)文件,其中properties格式的配置文件最为常用,其有一个固定的 ...

  4. nginx大概工作机制

    1.master和worker nginx启动后,会有2种进程:worker和master;worker可能有多个:

  5. 我爱网络流之最大流Dinic

    直接上大佬博客: Dinic算法详解及实现来自小菲进修中 Dinic算法(研究总结,网络流)来自SYCstudio 模板步骤: 第一步,先bfs把图划分成分成分层图网络 第二步,dfs多次找增广路 当 ...

  6. git避免提交本地配置文件-来自同事的分享

    在项目协作中,对于已经更改的文件,不同的开发者常常需要根据自己的需要对文件进行更改已满足本地开发环境的需求(这种情况很常见,一般是对项目相关的配置项的更改,对业务逻辑代码的更改一般都是正常的协作编码过 ...

  7. Java基础__Java中集合类

    ArrayList:有序.可重复.线程不安全.内部使用数组进行存储 LinkedList:有序.可重复.线程不安全.内部使用引用进行存储[可以很方便的进行插入.删除数据] Vector:有序.可重复. ...

  8. CodeForces 755D PolandBall and Polygon ——(xjbg)

    每次连线,起点和终点之间,每一个被点亮的点,这些点都能连出去两条线,因此可以增加的块数+2(1这个点除外,因为只有连出的点没有连进的点),计算起点和终点之间有几个点被点亮即可,然后1这个点特判一下.感 ...

  9. antd-mobile的DatePicker分钟精度半小时

    项目要求,在时间选择上需要精确到分钟,且分钟只能半小时,既0分钟或者是30分钟. 前期引用的时间控件是antd-mobile的DatePicker组件,具体用法可参考:https://mobile.a ...

  10. [NOIP2018]:旅行(数据加强版)(基环树+搜索+乱搞)

    题目描述 小$Y$是一个爱好旅行的$OIer$.她来到$X$国,打算将各个城市都玩一遍.小$Y$了解到,$X$国的$n$个城市之间有$m$条双向道路.每条双向道路连接两个城市.不存在两条连接同一对城市 ...