2021-08-14

学习内容

pandas基础

pandas之Series创建

q=pd.Series([7,8,9,10,11,12,13,14,15])
print(q)

a={string.ascii_uppercase[i]:i for i in range(10)}
print(pd.Series(a))
print(pd.Series(a,index=list(string.ascii_uppercase[3:13])))

t=pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
print(t)

pandas之Series切片和索引

print("(从0开始的)从2取步长2到10",t[2:10:2])
print("第2对的值",t[1])
print("取出键值对第3,4,7个",t[[2,3,6]])
print("如果t小于4就会被取出",t[t<4])
print("寻找键",t["F"])
print(t[["A","F"]])

pandas之Series的索引和值

print(t.index)
print(t.values)
print(type(t.index))
print(type(t.values))

自定义行列索引

a=pd.DataFrame(np.arange(12).reshape(3,4),index=list("iop"),columns=list("hjkl"))
print(a)

DataFrame 二维容器

创建

a=pd.DataFrame(np.arange(12).reshape(3,4))
print(a)

DataFrame的基础性质

print("形状",a.shape)
print("列数据类型",a.dtypes)
print("数据维度",a.ndim)
print("行索引",a.index)
print("列索引",a.columns)
print("对象值,二维ndarray数组",a.values)
print("显示头部几行默认5行",a.head(2))
print("显示尾部几行默认5行",a.tail(2))
print("相关信息概览:行数,列数,列索引,列非空值个数,列类型,内存占用",a.info)
print("快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值",a.describe())

数据布尔索引

print(df[df["Count_AnimalName"]>49])
print(df[(df["Count_AnimalName"]>50)&(df["Row_Labels"].str.len()<6)])

索引数据

a=pd.DataFrame(np.arange(12).reshape(3,4),index=list("ABC"),columns=list("WXYZ"))
df.loc通过标签索引行数据
print(a)
print("loc")
print(a.loc["C","W"])
print(a.loc[["A","C"],["X","Z"]])
print(a.loc[["A","C"],])
print(a.loc["A":"C",["W","Z"]])
df.iloc通过位置获取行数据
print(a.iloc[1:3,[2,3]])
print(a.iloc[1:3,1:3])
赋值更改数据
a.loc["A","W"]=100
a.iloc[1:3,[2,3]]=200
print("更改后的数据",a)
loc方法的应用
a=pd.DataFrame(np.arange(24).reshape(4,6),index=list("ABCD"),columns=list("UVWXYZ"))
print(a)
a.loc["A",["U","Z"]]=np.NAN
a.loc["D","W"]=np.NAN
print(a)
print(pd.isnull(a["U"]))
print(a[pd.isnull(a["U"])])
# print(a.dropna(axis=0, how='any', inplace=False))
print(a.fillna(a.mean(axis=0)))
print(a.mean(axis=0))
a={"name":"xiaoming","age":14,"id":10101}
b={"name":"xiaohong","age":15,"id":10102}
c={"name":"xiaodong","age":16,"id":10103}
t=pd.DataFrame([a,b,c])
print(t)
t.loc[1,"age"]=np.NAN
t.loc[2,"id"]=np.NAN
print(t.fillna(t.mean(axis=0)))

pandas的时间序列

a=pd.date_range(start="2020-01-01",end="2020-03-01")
print(a)
print(pd.date_range(start="20200101",end="20200911",freq="BM"))
print(pd.date_range(start="20200101",periods=10,freq="WOM-3FRI"))
index=pd.date_range("20170101",periods=10)
df=pd.DataFrame(np.random.rand(10),index=index)
df["timeStamp"]=pd.to_datetime(df["timeStamp"],format="")

重采样

#重采样:指的是将时间序列从一个频率转化为另一个频率进行处理的过程,
# 将高频率数据转化为低频率数据为降采样,低频率转化为高频率为升采样
t=pd.DataFrame(np.random.uniform(10,50,(100,1)),index=pd.date_range("2017-01-01",periods=100))
print(t)
print(t.resample("M").mean())
print(t.resample("10D").count())
print(t.resample("QS-JAN").count())

#PeriodIndex
periods = pd.PeriodIndex(year=df["year"],month=df["month"],day=df["day"],hour=df["hour"],freq="H")
data=df.set_index(periods).resample("10D").mean()
print(df)

读取文件数据

data_csv = "E:\dogNames2.csv"
df=pd.read_csv(data_csv)
df=df.sort_values(by="Count_AnimalName",ascending=False)
print(df.head)

数据分析综合示例

1.使用matplotlib呈现店铺总数排名前10的国家

# coding:utf-8
import pandas as pd
from matplotlib import pylab as p
file_path = "F:\directory.csv"
#读取DateFrame对象
df = pd.read_csv(file_path)
#排序
num_data = df.groupby(by="Country").count()["Brand"].sort_values(ascending=False)[:10]
_x = num_data.index
_y = num_data.values
p.bar(range(len(_x)), _y, width=0.3)
p.xticks(range(len(_x)), _x)
p.show()

使用matplotlib呈现中国每个城市的店铺数量

#coding:utf-8
import pandas as pd
from matplotlib import pylab as p
from matplotlib import font_manager
#字体
my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf")
file_path = "F:\directory.csv"
#读出DateFrame对象
df = pd.read_csv(file_path)
data = df.groupby(by=["Country","City"])["Brand"].count()
#按降序排序
num_data = data["CN"].sort_values(ascending=False)[:40]
_x = num_data.values
_y = num_data.index
p.figure(figsize=(15,10),dpi=80)
p.barh(range(len(_y)),_x,height=0.4)
p.yticks(range(len(_y)),_y,fontproperties=my_font)
p.grid()
p.show()

统计不同年份书的数量

#coding:utf-8
import pandas as pd
from matplotlib import pylab as p
from matplotlib import font_manager
#字体
my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf")
file_path = "F:/books.csv"
df = pd.read_csv(file_path)
#降序排序
data = df["books_count"].groupby(by=df["original_publication_year"]).sum().sort_values(ascending=False)
x = data.index
y = data.values
#设置图片参数
p.figure(figsize=(15,8),dpi=80)
p.scatter()
p.show()

统计不同年份书的平均评分情况

#coding:utf-8
import pandas as pd
from matplotlib import pylab as p
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf")
file_path = "F:/books.csv"
df = pd.read_csv(file_path)
data = df.groupby(by="original_publication_year")["average_rating"].mean()
_x = data.index
_y = data.values
p.figure(figsize=(15,8),dpi=80)
p.plot(range(len(_x)),_y)
p.xticks(list(range(len(_x)))[::10],_x[::10].astype(int),rotation=45)
p.show()

统计911不同类型的紧急情况的次数

#coding:utf-8
import numpy as np
import pandas as pd
from matplotlib import pylab as p
from matplotlib import font_manager
my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf")
file_path = "F:\911.csv"
df = pd.read_csv(file_path)
temp_list = df["title"].str.split(":").tolist()
data_list = list(set([i[0] for i in temp_list]))
zero_df = pd.DataFrame(np.zeros((df.shape[0],len(data_list))),columns=data_list)
for i in data_list:
    zero_df[i][df["title"].str.contains(i)]=1
type_count = zero_df.sum(axis=0)
print(type_count)
_x = type_count.index
_y = type_count.values
p.figure(figsize=(15,8),dpi=80)
p.bar(_x,_y,width=0.1)
p.show()

北京PM2.5数据

#coding:utf-8
import pandas as pd
import pylab as p

file_path = "F:/BeijingPM20100101_20151231.csv"
df = pd.read_csv(file_path)
period = pd.PeriodIndex(year=df["year"],month=df["month"],day=df["day"],hour=df["hour"],freq="H")
df["datetime"] = period
df.set_index("datetime",inplace=True)
df = df.resample("10D").mean()
data = df["PM_US Post"].dropna()
data_chain = df["PM_Dongsi"].dropna()
x=data.index
x=[i.strftime("%Y%m%d") for i in x]
x_chain = [i.strftime("%Y%m%d") for i in data_chain.index]
y=data.values
y_chain = data_chain.values
p.figure(figsize=(15,8),dpi=80)
p.plot(range(len(x)),y,label="US")
p.plot(range(len(x_chain)),y_chain,label="CN")
p.xticks(range(0,len(x),10),list(x)[::10],rotation=45)
p.legend()
p.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值