Python数据分析处理库Pandas


一、Pandas的构建

# -*- coding: UTF-8 -*-
import pandas
from pandas import DataFrame

data = {'state':['Ohino','Ohino','Ohino','Nevada','Nevada'],
        'year':[2000,2001,2002,2001,2002],
        'pop':[1.5,1.7,3.6,2.4,2.9]}
DF = DataFrame(data)
print(DF)

# 输出结果:
   pop   state  year
0  1.5   Ohino  2000
1  1.7   Ohino  2001
2  3.6   Ohino  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002

二、Pandas处理数据:

注:(因为涉及到文件不同,输出内容不同,该文章不加输出结果,有想要测试的可以评论留邮箱,我发文件)

1、读取csv文件,使用read_csv函数

food_info = pandas.read_csv("food_info.csv")
print(food_info)
# print(type(food_info))
# print(food_info.dtypes)

 
 
 
 
 
 
print(food_info.head(3)) # 默认取前5条数据,如需自定义所取数,传数字即可
print(food_info.tail(3)) # 默认取后5条数据,如需自定义所取数,传数字即可
print(food_info.columns) # 每列数据的标题

2、索引与计算
行:
print(food_info.loc[[0, 2, 4]]) # 取到第0、2、4行的数据
print(food_info.loc[0:1]) # 取到第1行到第二行的数据
列:
data_col = food_info["NDB_No"] # NDB_No为第1列的标题
print(data_col)

# data_cols = food_info[["NDB_No","Shrt_Desc"]] # 取多列数据
拿到每列标题并转为list
print(food_info.columns)
col_list = food_info.columns.tolist()
print(col_list)
从上述的col_list中找到标题以“g”结尾的列数据
titles_g = []
for col_title in col_list:
    if col_title.endswith("(g)"):
        titles_g.append(col_title)
data_g = food_info[titles_g]
print(data_g.head(3))
计算:csv表中有一列数据单位是mg,我们需要将该列数据转为g为单位,那么这列数据除以1000即可,然后可以替换原表中数据
data_1000 = food_info["Calcium_(mg)"]/1000
print(data_1000) = data_1000

# 还可以再加一列
food_info["Calcium_(g)"] = data_1000
取一列当中最大值,最小值同理
data_max = food_info["Calcium_(mg)"].max()

3、数据预处理
排序:
# -*- coding: UTF-8 -*-
import pandas

food_info = pandas.read_csv("food_info.csv")
# sort_values函数,让表根据Water_(g)这一列的值排列,inplace是否在原文件上修改,ascending指是否升序
new_food_info = food_info.sort_values("Water_(g)",inplace=False,ascending=False)
# print(new_food_info)

# 让index值根据排序后reset,可以将上下两个打印出来做index的对比
new_food_info_reIndexed = new_food_info.reset_index(drop=True)
print(new_food_info_reIndexed)
预处理数据,(计算表中一列数据的平均值,这一列数据有无效数据,故需要拿到有效数据后再算average):
# -*- coding: UTF-8 -*-
import pandas
import numpy

# 打开csv文件
titanic_train = pandas.read_csv("titanic_train.csv")
# print(titanic_train.head())
age = titanic_train["Age"]

# 将age的数据检查,有数据则为True,没有数据为False
age_isnull = pandas.isnull(age)
# print(age_isnull)

# 拿到没有数据的age值
age_null_true = age[age_isnull]
# print(age_null_true)
# print(len(age_null_true))

# 拿到有数据的age
good_ages = age[age_isnull==False]
# print(good_ages)
# 算age的平均值
age_average = sum(good_ages)/len(good_ages)
print(age_average)
直接用函数算平均值
# 求均值的函数
age_average_mean = age.mean()
print(age_average_mean)
定点取数据
# 拿到第60行,"Age"的值
row_index60_age = titanic_train.loc[60,"Age"]
print(row_index60_age)

# 输出结果是:
22.0

4、根据index为基准,对value作相应的计算
# -*- coding: UTF-8 -*-
import pandas
import numpy

titanic_train = pandas.read_csv("titanic_train.csv")

# passenger_class = [1,2,3]
# Fare_by_class = {}
# for this_clas in passenger_class:
#     pclass_rows = titanic_train[titanic_train["Pclass"] == this_clas]
#     pclass_fares = pclass_rows["Fare"]
#     Fare_by_class[this_clas] = pclass_fares.mean()
# print(Fare_by_class)

# 需要统计的数据以index为基准,需要统计的值是value,aggfunc需要统计value的关系函数,默认是mean(平均值)
passenger_survival = titanic_train.pivot_table(index="Pclass", values="Fare", aggfunc=numpy.mean)
print(passenger_survival)

# 分别计算Fare与Survived的和,根据Embarked为基准
passenger_survival_2 = titanic_train.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=numpy.sum)
print(passenger_survival_2)

# 输出的结果:
             Fare
Pclass           
1       84.154687
2       20.662183
3       13.675550
                Fare  Survived
Embarked                      
C         10072.2962        93
Q          1022.2543        30
S         17439.3988       217












 
 

猜你喜欢

转载自blog.csdn.net/u012236875/article/details/73742089