百木园-与人分享,
就是让自己快乐。

pyhton_Pandas教程

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

  Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。

  Pandas 名字衍生自术语 \"panel data\"(面板数据)和 \"Python data analysis\"(Python 数据分析)。

  Pandas 一个强大的分析结构化数据的工具集,基础是 numpy(提供高性能的矩阵运算)。

  Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。

  Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

数据结构

Series 是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。


一、Pandas 安装

  安装 pandas 需要基础环境是 Python,开始前我们假定你已经安装了 Python 和 Pip。

pip install pandas

 查看pandas的版本

import pandas as pd

print(pd.__version__)

 

二、Pandas 数据结构 -- Series

  pandas.Series( data, index, dtype, name, copy)
  data:一组数据(ndarray 类型)。
  index:数据索引标签,如果不指定,默认从 0 开始。
  dtype:数据类型,默认会自己判断。
  name:设置名称。
  copy:拷贝数据,默认为 False。

mydataset = {
\'sites\': [\"Google\", \"Runoob\", \"Wiki\"],
\'number\': [1, 2, 3]
}
#将字典类型转化成dataframe类型
myvar = pd.DataFrame(mydataset)
print(myvar)
print()

a = [1, 2, 3]
myvar = pd.Series(a)
print(myvar)
print(myvar[1])#指定索引查询

sites = {1: \"Google\", \'runoob\': \"Runoob\", 3: \"Wiki\"}
myvar = pd.Series(sites)#使用字典类型创建Series,key的值就成了索引值
print(myvar)
print()

# 参数index
a = [\"Google\", \"Runoob\", \"Wiki\"]
myvar = pd.Series(a, index = [\"x\", \"y\", \"z\"])#index指定索引名称
print(myvar)
print(myvar[\'y\'])
print()

sites = {1: \"Google\", 2: \"Runoob\", 3: \"Wiki\"}
myvar = pd.Series(sites, index = [3, 2])#使用索引,截取字典中所需的部分
print(myvar)
print()

# 参数name,设置name属性
sites = {1: \"Google\", 2: \"Runoob\", 3: \"Wiki\"}
myvar = pd.Series(sites, index = [1, 2], name=\"I is series(name)\" )
print(myvar)

  

三、Pandas 数据结构 - DataFrame

  pandas.DataFrame( data, index, columns, dtype, copy)
  data:一组数据(ndarray、series, map, lists, dict 等类型)。
  index:索引值,或者可以称为行标签。
  columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
  dtype:数据类型。
  copy:拷贝数据,默认为 False。

data = [[\'Google\',10],[\'Runoob\',12],[\'Wiki\',13]]
df = pd.DataFrame(data,columns=[\'Site\',\'Age\'],dtype=float) # 列表转dataframe
print(df)

data = {\'Site\':[\'Google\', \'Runoob\', \'Wiki\'], \'Age\':[10, 12, 13]}
df = pd.DataFrame(data) # 字典转dataframe
print (df)

data = [{\'a\': 1, \'b\': 2},{\'a\': 5, \'b\': 10, \'c\': 20}]
df = pd.DataFrame(data)
print (df)

data = {
\"calories\": [420, 380, 390],
\"duration\": [50, 40, 45]
}
df = pd.DataFrame(data)
print(df)
print(df.loc[0])# 使用df.loc[]返回第一行
print(df.loc[1])# 使用df.loc[]返回第一行
print(df.loc[[0,1]])# 使用df.loc[[ ]]返回两行数据
print(df.loc[0:1,[\'calories\']])# 使用df.loc[a:b ,[\' \']]返回指定某列 a~b的数据

data = {
\"calories\": [420, 380, 390],
\"duration\": [50, 40, 45]
}
df = pd.DataFrame(data, index = [\"day1\", \"day2\", \"day3\"])#指定索引值
print(df)
print(df.loc[\'day2\'])

 

 四、Pandas CSV 文件

   1、read_csv()  将csv()文件导入,存在Dataframe对象中

import pandas as pd

# pd.read_csv() 读取csv文件
df = pd.read_csv(\'./nba.csv\',encoding=\'GBK\')
print(df.to_string())
print(df.loc[:,[\'Name\']])#获取列

# head()
print(df.head().to_string())#默认获取前5行
print(df.head(3).to_string())#获取前3行

# tail()
print(df.tail().to_string())#默认获取后5行
print(df.head(3).to_string())#获取后3行

# info() 返回表格的一些基本信息
print(df.info())

   2、to_csv() 将 DataFrame 存储为 csv 文件

import pandas as pd


# 使用 to_csv() 方法将 DataFrame 存储为 csv 文件
nme = [\"Google\", \"Runoob\", \"Taobao\", \"Wiki\"]
st = [\"www.google.com\", \"www.runoob.com\", \"www.taobao.com\", \"www.wikipedia.org\"]
ag = [90, 40, 80, 98]
dict = {\'name\': nme, \'site\': st, \'age\': ag}
df = pd.DataFrame(dict)
# print(df)

df.to_csv(\'./aaa.csv\')# 保存 dataframe到该文件夹下
df.to_csv(r\'C:\\Users\\Public\\Desktop\\a1.csv\',encoding=\'utf8\')# 保存 dataframe到指定路径

path = r\"C:\\Users\\Public\\Desktop\"
wen = \'\\ccc.csv\'
df.to_csv(path+wen,encoding=\'utf8\')
 3、to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替。
import pandas as pd
df = pd.read_csv(\'nba.csv\') print(df)

  

五、Pandas JSON

1、JSON 对象与 Python 字典具有相同的格式,所以我们可以直接将 Python 字典转化为 DataFrame 数据:
import pandas as pd

# 字典格式的 JSON                                                                                              
s = {
    \"col1\":{\"row1\":1,\"row2\":2,\"row3\":3},
    \"col2\":{\"row1\":\"x\",\"row2\":\"y\",\"row3\":\"z\"}
}
# 读取 JSON 转为 DataFrame                                                                                          
df = pd.DataFrame(s)
print(df)

  以上实例输出结果为:

      col1 col2
row1     1    x
row2     2    y
row3     3    z

  2、从 URL 中读取 JSON 数据:

import pandas as pd

URL = \'https://static.runoob.com/download/sites.json\'
df = pd.read_json(URL)
print(df)

  

六、Pandas 数据清洗

  数据清洗是对一些没有用的数据进行处理的过程。

  很多数据集存在数据缺失数据格式错误错误数据重复数据的情况,如果要对使数据分析更加准确,就需要对这些没有用的数据进行处理。

  在这个教程中,我们将利用 Pandas包来进行数据清洗。

 

1、Pandas 清洗空值

   如果我们要删除包含空字段的行,可以使用 dropna() 方法,语法格式如下:

    DataFrame.dropna(axis=0, how=\'any\', thresh=None, subset=None, inplace=False)
参数说明:
axis:  默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。 how:   默认为 \'any\' 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=\'all\' 一行(或列)都是 NA 才去掉这整行。 thresh: 设置需要多少非空值的数据才可以保留下来的。 subset: 设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。 inplace如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。默认为False

  1.1、添加na_values属性指定的某些数据修改为空数据(NaN)

# df = pd.read_csv(r\'C:\\Users\\Administrator\\Desktop\\property-data.csv\')
missing_values = [\"n/a\", \"na\", \"--\",\"N\",\"Y\"]
df1 = pd.read_csv(\'./property-data.csv\')
df2 = pd.read_csv(\'./property-data.csv\',na_values=missing_values)#添加na_values属性指定的某些数据修改为空数据(NaN)
print(df1)
print(df2)
# print(df2[\'SQ_FT\'].isnull())#判断某列中的各个单元格是否为空

  1.2、 dropna() 方法 返回一个新的 DataFrame,不会修改源数据。

# 如果你要修改源数据 DataFrame, 可以使用 inplace = True 参数:
new_df = df1.dropna()#如果某行中有一个单元格数据为空则删除整行
new_df2 = df1.dropna(subset=[\'NUM_BATH\'])# 某指定列如果有空数据,则删除空数据所在行
print(new_df)
# print(new_df2)

  1.3、 fillna()方法 来替换一些空字段

df3 = df1.fillna(\'666\') #添加 inplace=True属性会改变源数据
df4 = df1[\'NUM_BEDROOMS\'].fillna(\'555\') #指定某列获取数据并替换空数据
print(df3)
print(df4)

  1.4、使用 mean() 方法计算列的均值并替换空单元格

x = df1[\"ST_NUM\"].mean() #指定某列进行平均值计算
df1[\"ST_NUM\"].fillna(x, inplace = True)#使用fillna()方法进行数据替换
print(x)
print(df1)

  1.5、使用 median() 方法计算列的中位数并替换空单元格:

x = df1[\"PID\"].median()
df1_1 = df1[\"PID\"].fillna(x)
print(x)
print(df1_1)

  1.6、使用 mode() 方法计算列的众数并替换空单元格

x = df1[\"PID\"].mode()
df1[\"PID\"].fillna(x,inplace=True)
print(x)
print(df1)

  

2、Pandas 清洗格式错误数据

3、Pandas 清洗错误数据

4、Pandas 清洗重复数据










来源:https://www.cnblogs.com/komorebiZjh/p/16213317.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » pyhton_Pandas教程

相关推荐

  • 暂无文章