Python库——Pandas数据分析

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。
Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。
Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。
Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。
Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

Pandas数据结构 Series

import numpy as np
import pandas as pd
import string

# t = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
# print(t)  # 第一列是索引,第二列是数据
# print(type(t))

'''
a = {string.ascii_uppercase[i]:i for i in range(10)}
# print(a)

print(pd.Series(a)) #通过字典创建Series

'''

'''
#根据索引值读取数据
a = ["Jack","Lucy","Tom"]
myvar = pd.Series(a, index = ["J", "L", "T"])
print(myvar["L"])   
'''

#使用 key/value 对象,类似字典来创建 Series
sites = {1: "Google", 2: "Baidu", 3:"Wiki"}
myvar = pd.Series(sites)
print(myvar)

myvar2 = pd.Series(sites,index = [1, 2])    #只取字典的一部分数据
print(myvar2)

myvar3 = pd.Series(sites,index = [1, 2], name = "RUNOOB-Series-TEST") #设置名称参数
print(myvar2)

Pandas数据结构 DataFrame

import pandas as pd



'''
#使用列表创建DataFrame
data = [['Google',10],['Runoob',12],['Wiki',13]]
df = pd.DataFrame(data,columns=['site','age'],dtype=float)
print(df)
'''

'''
#使用nadarrays
data = {'Site':['Google','Runoob','Wike'],'Age':['10','12','13']}
df = pd.DataFrame(data)
print(df)
'''

'''
#使用字典创建
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)  #没有对应的部分数据为 NaN。
'''

'''
#loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,以此类推
data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}
df = pd.DataFrame(data)
print(df.loc[1])
print(df.loc[2])    #print(df.loc[1,2])
'''

# 指定索引
data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}

df = pd.DataFrame(data, index = ["day1", "day2", "day3"])

print(df.loc["day2"])

读取文件

import pandas as pd

'''
#读取csv
df = pd.read_csv('../data/nba.csv')
print(df.to_string())   #如不使用to_string,则输出结果为数据的前面 5 行和末尾 5 行
'''

'''
# 存储 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)
df.to_csv('../data/site.csv')
'''

#head(n) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行
df = pd.read_csv('../data/nba.csv')
# print(df.head())
# print(df.tail())     #返回 5 行
print(df.info())

读取json

import pandas as pd

# df = pd.read_json("../data/sites.json")
#
# print(df.to_string())

# data =[
#     {
#       "id": "A001",
#       "name": "菜鸟教程",
#       "url": "www.runoob.com",
#       "likes": 61
#     },
#     {
#       "id": "A002",
#       "name": "Google",
#       "url": "www.google.com",
#       "likes": 124
#     },
#     {
#       "id": "A003",
#       "name": "淘宝",
#       "url": "www.taobao.com",
#       "likes": 45
#     }
# ]
#
# df = pd.DataFrame(data)
#
# print(df)

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

数据清洗

import pandas as pd

#清洗数据
# missing_values = ["n/a", "na", "--"]
# df = pd.read_csv("../data/property-data.csv",na_values=missing_values)
#
# print(df['NUM_BEDROOMS'])
# print(df['NUM_BEDROOMS'].isnull())#判断单元格是否为空


# df = pd.read_csv("../data/property-data.csv")
#删除包含空数据的行
# new_df = df.dropna()
# df.dropna(inplace=True) #修改原文件
# print(new_df)

#移除指定列有空值的行
# df.dropna(subset=['ST_NUM'], inplace=True)
#替换一些空字段
# df.fillna(12345, inplace=True)
#指定某一个列来替换数据
# df['PID'].fillna(12345, inplace=True)

#均值 代替空单元格
# x = df["ST_NUM"].mean()
# # x = df["ST_NUM"].median()   #中位数
# # x = df["ST_NUM"].mode()     #众数
# df['PID'].fillna(x, inplace=True)
# print(df.to_string())

#清洗格式错误数据 格式化日期
# data = {
#   "Date": ['2020/12/01', '2020/12/02' , '20201226'],
#   "duration": [50, 40, 45]
# }
# df = pd.DataFrame(data, index=["day1", "day2", "day3"])
# df['Date'] = pd.to_datetime(df['Date'])
# print(df.to_string())


'''
person = {
  "name": ['Google', 'Runoob' , 'Taobao'],
  "age": [50, 40, 12345]    # 12345 年龄数据是错误的
}

df = pd.DataFrame(person)
# df.loc[2, 'age']= 30    #第三行,age列

for x in df.index:
  if df.loc[x, 'age'] > 120:
    df.loc[x, 'age'] = 120
    #df.drop(x, inplace=True) #或者删除
print(df.to_string())'''


person = {
  "name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
  "age": [50, 40, 40, 23]
}
df = pd.DataFrame(person)

# df.drop_duplicates(inplace = True)  #删除重复数据
print(df.duplicated())  #查看重复数据

学习于——Pandas 教程

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值