pandas

import pandas as pd
#Pandas Series *类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
* *#pandas.Series( data, index, dtype, name, copy)
* a = [1, 2, 3]
myvar = pd.Series(a)
print(myvar[1])

*# 1.**指定索引值
* a = [‘aa’,‘bb’,‘cc’]
myvar = pd.Series(a,index=[‘x’,‘y’,‘z’])
print(“数组为:”,myvar)
print(“指定索引:”,myvar[‘y’])

*# 2.用字典创建Series
* sites = {1:“aa”,2:“bb”,3:‘cc’}
myvar = pd.Series(sites)
print(“字典创建Series:”,myvar)

*# 3.设置Series**名称
* test3 = {2:‘33’,3:‘dsa’}
myvar = pd.Series(test3,index = [2,3],name=“test3”)
print(“设置名称:”,myvar)

#DataFrame 是一个表格型的数据结构*,有序索引,每列可以是不同的值类型
* “”" pd.DataFrame(data, index, columns, dtype, copy)
data
:一组数据
*
index**:索引值,也称行名**
cokumns**:列标签**,即为列名
dtype**:数据类型**
copy**:拷贝数据**
“”"
* import pandas as pd

*#DataFrame**是一个二维的数组结构,类似二维数组
* *# 1.使用列表创建DataFrame
* data1 = [[‘google’,10],[‘baidu’,20],[‘souhu’,30]]
df1 = pd.DataFrame(data1,columns=[‘name’,‘age’])
print(“df1:”,df1)

*# 2.使用ndarray**创建
* data2 = {‘Site’:[‘google’,‘Runoob’,‘wiki’],‘Age’:[10,20,30]}
df2 = pd.DataFrame(data2)
print(“ndarray创建:”,df2)

*# 3.**使用字典创建
* data3 = [{‘a’:1,‘b’:2},{‘a’:5,‘b’:3}]
df3 = pd.DataFrame(data3)
print(“使用字典创建:”,df3)

# 4.使用loc返回指定行的数据,**包括列名数据值,行名,数据值,数据类型
* data4 = {
“calories”: [420, 380, 390],
“duration”: [50, 40, 45]}
df4 = pd.DataFrame(data4,index = [“day1”, “day2”, “day3”])
print(“返回指定行得数据”,df4.loc[0])
print(“返回多行得数据”,df4.loc[[0,1]])
#也可以使用[[…]]*

import pandas as pd
*#CSV文件格式类似于excel**文件样式,但是它是纯文本文件

* *# 1.*全文本读取 *df.toString()
* df = pd.read_csv(“nba.csv”)
*# print(df.to_string())

# 2.如若不用toString**输出,而直接输出,则会输出首尾各五行
* *# print(df)

# 3.使用to_csv()DataFrame存储为csv**文件
* name = [“Google”, “Runoob”, “Taobao”, “Wiki”]
st = [“www.google.com”, “www.runoob.com”, “www.taobao.com”, “www.wikipedia.org”]
ag = [90, 40, 80, 98]
dict3 = {‘name’:name,‘site’:st,‘age’:ag}
df3 = pd.DataFrame(dict3)
*# df3.to_csv(“site.csv”)

# 4.head()* 读取前面指定的 n *行,若不填n,则默认五行
* df4 = pd.read_csv(“nba.csv”)
*# print(df4.head())
# print(“第一行:”,df4.head(1))

# 5.tail()* 读取末尾*,head
# print(“最后一行:”,df4.tail(1))

# 6. info()**返回表格的基本信息
* df6 = pd.read_csv(“nba.csv”)
print(“详细信息:”,df6.info())*#*输出行信息,列信息,多少条记录,等

*#**简述就是一个列表,但是列表中的元素全是字典的键值对
* import json

import pandas as pd

*# 1. to_String()返回的是DataFrame**类型的数据,即为表格型
* js1 = pd.read_json(“sites.json”)
print(js1.to_string())

*# 2.列表和字典转换成DataFrame
* list2 = [ {
“id”: “A001”,
“name”: “菜鸟教程”,
“url”: “www.runoob.com”,
“likes”: 61
},]
dict2 = s = {
“col1”:{“row1”:1,“row2”:2,“row3”:3},
“col2”:{“row1”:“x”,“row2”:“y”,“row3”:“z”}
}
print(“列表转换:”,pd.DataFrame(list2))
print(“字典转成:”,pd.DataFrame(dict2))

*# 3.URL读取json数据,其为json**数据得地址
* url = ‘https://static.runoob.com/download/sites.json’
df = pd.read_json(url)
print(“URL:”)
print(df)

# 4.内嵌JSON**数据 *json_normalize(
* # df4 = pd.read_json(“nested_list.json”) # 取出全部数据
* with open(“nested_list.json”,“r”) as f:
#利用JSOON
加载数据
* data4 = json.loads(f.read()) #**转成字典
* df_nested_list = pd.json_normalize(data4,record_path=[‘students’])
#**展平数据
* *# df_nested_list = pd.json_normalize(data4,record_path=[‘students’],meta=[‘school_name’, ‘class’])#**添加特定得标签
* print(“展开后得nested_list中得student:”)
print(df_nested_list)

*# 5.**数据嵌套了列表和字典,从中选取特定得标签
* with open(“nested_mix.json”,“r”) as f:
data5 = json.loads(f.read())
df = pd.json_normalize(
data5,record_path=[‘students’],
meta=[
‘class’,
[‘info’,‘president’],
[‘info’,‘contacts’,‘tel’]
]
)
print(“嵌套了字典与列表后”)
print(df)

*# 6.**只读取数据中得某一组属性
* print(“只读取一种属性”)
from glom import glom
df = pd.read_json(‘nested_deep.json’)
data = df[‘students’].apply(lambda row: glom(row,‘grade.math’))
print(data)

*#数据清洗指去除没有用得数据,以及处理数据缺失、格式错误、数据错误、重复数据等情况
* import pandas as pd
*# 1.清洗空值 *dropna()方法
* # 常见的四种空数据:n/a NA — na
* “”"
DataFrame.dropna(axis=0, how=‘any’,thresh=None,subset=None,inplace=Flase)
参数:axis:0表示整行,1表示整列
how:‘any’表示一行若有一个空则剔除整行,列同理;‘all‘整行为空才剔除
thresh:设置需要多少非空数据才能保留下来
subset:设置要检查的列。若是多列,可以使用list
inplace:设置为True,清洗后的DataFrame会覆盖原来的值
“”"
df = pd.read_csv(“property-data.csv”)
# data = df.dropna() # *此方法默认会返回一个新的
DataFrame
,并不会修改原来的数据,若需要修改,则
inplace
设置为**True
# print(data.toString())

# 2.*判断各个单元格为空 df.isnull()-------NA *在这里不是空数据
* print(“查询NUM_BEDROOMS数据”,df[‘NUM_BEDROOMS’])
print(“查询NUM_BEDROOMS是否为空”,df[‘NUM_BEDROOMS’].isnull())

# *因na在**isnull()**中被判断不是空值,所以可以读取时指定数据类型
* missing_values = [“n/a”, “na”, “–”]
df =pd.read_csv(“property-data.csv”,na_values = missing_values)

# 3. 替换空数据 df.fillna()
* df_3 = df.fillna(“原来为空”)
df_4 = df[‘PID’].fillna(“指定列替换”)
#**返回的是指定列
* print(“不指定列替换”,df_3)
print(“fillna指定列替换”,df_4)

# 4.均值替换空值mean(), 中位数替换空值**median(), 众数替换空值**mode()
* x = df[‘ST_NUM’].mean()
#**单独返回替换的那列
* # x = df[‘ST_SUM’].median()
# x = df[‘ST_SUM’].mode()
# df[‘ST_SUM’].mean(x,inplace=True)
*利用计算所得,替换原数据

* *# 5.清洗格式错误–>**第一种:一般采用修改整列的格式
* data = {
“Date”: [‘2020/12/01’, ‘2020/12/02’ , ‘20201226’],
“duration”: [50, 40, 45]}
df5 = pd.DataFrame(data)
*# df5[‘Date’] = pd.to_datetime(df5[‘Date’],format=“%Y%m%d”)
# print(“统一修改数据格式:”,df5.to_string())

# 6.清洗错误数据的第二种方法---->**修改
* person = {
“name”: [‘Google’, ‘Runoob’ , ‘Taobao’],
“age”: [50, 40, 12345] # 12345 *年龄数据是错误的
* }
df6 = pd.DataFrame(person)
df6.loc[2,‘age’] == 30 *#**修改正确
* for x in df.index: *#**判断越界,并修改
* if df.loc[x,“age”] > 120:
df.loc[x,“age”] = 120
for x in df.index: # *判断越界,并且删除
* if df.loc[x, “age”] > 120:
df.drop(x, inplace = True)

print(“修改数据的最终改版”,df.to_string())

# 7.清洗重复数据 duplicated(),drop_duplicates()
* person = {
“name”: [‘Google’, ‘Runoob’, ‘Runoob’, ‘Taobao’],
“age”: [50, 40, 40, 23]
}
df7 = pd.DataFrame(person)
print(“查重:”,df7[“name”].duplicated())
#查询重复数据,有返回True
,否则返回**False
* print()

“”"读取数据
pd.read_csv(filename)
读取 CSV 文件;*
pd.read_excel(filename)* 读取 Excel 文件;*
pd.read_sql(query, connection_object)* SQL 数据库读取数据;*
pd.read_json(json_string)* JSON 字符串中读取数据;*
pd.read_html(url)* HTML 页面中读取数据。*
“”"
* import pandas as pd

*# import pandas as pd
# 1.csv
# df1 = pd.read_csv(‘data.csv’)

# 2.excel
# df2 = pd.read_excel(‘data.xlsx’)

# 3.**数据库中读取
* *# import sqlite3
# conn = sqlite3.connect(‘datavase.db’)
# df3 = pd.read_sql(‘select * from tablel_name’,conn)

# 4.JSON
# json_string = ‘{“name”: “John”, “age”: 30, “city”: “New York”}’
# df4 = pd.read_json(json_string)

# 5.HTML
#* HTML *页面中读取数据
* # url = ‘https://www.runoob.com’
# dfs = pd.read_html(url)
# df5 = dfs[0] #
*选择第一个数据框
* *# print(df5)

* “”" 查看数据(默认均为5行)
df.head(n) 显示前 n 行数据;
df.tail(n) 显示后 n 行数据;
df.info() 显示数据的信息,包括列名、数据类型、缺失值等;
df.describe() 显示数据的基本统计信息,包括均值、方差、最大值、最小值等;
df.shape 显示数据的行数和列数。
“”"
data = [
{“name”: “Google”, “likes”: 25, “url”: “https://www.google.com”},
{“name”: “Runoob”, “likes”: 30, “url”: “https://www.runoob.com”},
{“name”: “Taobao”, “likes”: 35, “url”: “https://www.taobao.com”}
]
df = pd.DataFrame(data)
print(“前面5行数据为:”,df.head())
print(“后门1行数据为:”,df.tail(1))

“”“数据选择和切片
df[column_name] 选择指定的列;
df.loc[row_index, column_name] 通过标签选择数据;
df.iloc[row_index, column_index] 通过位置选择数据;
df.ix[row_index, column_name] 通过标签或位置选择数据;
df.filter(items=[column_name1, column_name2]) 选择指定的列;
df.filter(regex=‘regex’) 选择列名匹配正则表达式的列;
df.sample(n) 随机选择 n 行数据。
“””
data = [
{“name”: “Google”, “likes”: 25, “url”: “https://www.google.com”},
{“name”: “Runoob”, “likes”: 320, “url”: “https://www.runoob.com”},
{“name”: “Taobao”, “likes”: 35, “url”: “https://www.taobao.com”}
]
df = pd.DataFrame(data)
print(“1.选择指定列:”,df[‘name’])
print(“2.通过标签选择数据:”,df.loc[1,‘url’])
print(“3.通过位置选择数据”,df.iloc[1,1])
*# print(“4.通过标签或者位置选择数据:”,df.ix[1,‘name’]) # no attribute
* print(“5.选择指定的列:”,df.filter(items=[‘name’,‘likes’]))
print(“6.选择与列名匹配正则表达式的列:”,df.filter(regex=‘Runoob’))
print(“7.随机选择n行数据”,df.sample(n=2))

“”" 数据排序
df.sort_values(column_name) 按照指定列的值排序;
df.sort_values([column_name1, column_name2], ascending=[True, False]) 按照多个列的值排序;
df.sort_index() 按照索引排序。
“”"
print(“1.指定列排序:”,df.sort_values(‘likes’))
print(“2.多个值排序:”,df.sort_values([‘likes’,‘name’]))
print(“3.按照索引排序:”,df.sort_index())

“”" 数据分组和聚合
df.groupby(column_name) 按照指定列进行分组;
df.aggregate(function_name) 对分组后的数据进行聚合操作;
df.pivot_table(values, index, columns, aggfunc) 生成透视表。

1.按照指定列进行分组
df.groupby(‘column_name’)
2.对分组后的数据进行聚合操作
df.aggregate(‘function_name’)
\3. 生成透视表
df.pivot_table(values=‘value’, index=‘index_column’, columns=‘column_name’, aggfunc=‘function_name’)
“”"

“”“数据合并
pd.concat([df1, df2]) 将多个数据框按照行或列进行合并;
pd.merge(df1, df2, on=column_name) 按照指定列将两个数据框进行合并。
“””
data_2 =[
{“name”: “Google1”, “likes”: 215, “url”: “https://www.gogle.com”},
{“name”: “Runoob1”, “likes”: 3220, “url”: “https://www.runob.com”},
{“name”: “Taobao1”, “likes”: 325, “url”: “https://www.taoba.com”}
]
print(“1.将多个数据框按照行或列进行合并”,pd.concat([pd.Series(data),pd.Series(data_2)]))
# print(“2.按照指定列将两个数据框进行合并”,pd.merge(pd.Series(data),pd.Series(data_2),on=‘url’)) *报错

* “”" 数据选择和过滤
df.loc[row_indexer, column_indexer] 按标签选择行和列。
df.iloc[row_indexer, column_indexer] 按位置选择行和列。
df[df[‘column_name’] > value] 选择列中满足条件的行。
df.query(‘column_name > value’) 使用字符串表达式选择列中满足条件的行。
“”"

“”“数据统计和描述
df.describe() 计算基本统计信息,如均值、标准差、最小值、最大值等。
df.mean() 计算每列的平均值。
df.median() 计算每列的中位数。
df.mode() 计算每列的众数。
df.count() 计算每列非缺失值的数量。
“””

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值