day03_pandas_demo

文章目录

    • pandas介绍
    • 为什么使用pandas
    • DataFrame
    • DataFrame属性
    • DataFrame的索引
      • 修改行列的索引值
      • 重设索引值
      • 以某列设置新索引
    • MultiIndex
    • Serias
    • 索引操作
      • 直接索引
      • 按名字索引
      • 按数值索引
    • 赋值操作
    • 排序
      • 对内容排序
      • 按索引排序
    • DataFrame的运算
      • 算术运算
      • 逻辑运算
        • 逻辑运算符号 < > | &
        • 逻辑运算函数 query() isin()
    • 统计运算
    • 自定义运算
    • Pandas画图
    • scv文件读取与存储
    • hdf5文件读取与存储
    • json文件读取与存储
    • 总结

pandas介绍

  • pandas= panel + data + analysis 面板数据分析
  • panel面板数据-计量经济学 三维数据
  • 以numpy为基础,借力numpy模块在计算方面性能高的优势
  • 基于matplotlib,能够简便的画图
  • 独特的数据结构

为什么使用pandas

  • 便捷的数据处理能力
  • 读取文件方便
  • 封装了matplotlib、numpy的画图和计算能力

DataFrame

## 结构:既有行索引,又有列索引的二维数组
import pandas as pd
import numpy as np
stock_change = np.random.normal(0, 1, (10, 5))
stock_change
array([[ 0.52652359, -0.42210135,  0.45506419, -0.1319933 , -0.85892243],[-2.80978824,  0.68502373, -0.72809275, -1.56716962,  0.24278934],[ 0.1423945 , -0.14913827, -0.30118759,  0.80841083,  0.56448585],[-1.11053808, -0.91833131, -0.82696531,  0.33592674, -1.81590623],[-0.7972349 , -0.38960542, -0.64822525, -1.67732846, -1.1320404 ],[-0.83075257, -0.96589613,  1.21458607, -0.54116531,  0.5416992 ],[ 0.2346827 ,  0.38728822,  0.5534352 ,  0.49615629,  0.03958449],[ 1.32743523,  0.8559906 , -0.35473279, -0.40734067,  0.23585156],[ 2.217162  ,  0.43897264,  1.39278121, -0.17076621,  1.25111371],[-1.84123059, -1.00666366,  2.07583716,  1.03959872,  1.20092384]])
stock_change1 = pd.DataFrame(stock_change)  ## 添加默认的索引
stock_change1
01234
0-0.230423-0.1086772.116127-0.405135-0.600457
11.422377-1.136674-0.4623350.795195-0.013265
20.708261-0.197826-0.177992-1.0787430.357987
3-0.3254320.2643370.856580-1.035939-0.228252
40.0167341.0075540.4549110.252380-0.691905
5-0.4717900.557541-0.7031710.344268-0.083205
6-0.013339-0.3003711.4249160.0283381.101670
70.061438-0.802730-0.746614-0.919655-1.336464
80.3692740.5154270.661126-0.550260-1.560633
9-1.087217-1.164305-0.4087481.198835-0.389584
# 添加行索引
stock_code = ['股票{}'.format(i+1) for i in range(10)]
stock_code
pd.DataFrame(stock_change, index=stock_code)  ## 这里需要注意第一个参数是ndarray,不是DataFrame结构,否则数据会变为nan
01234
股票1-1.7961490.0634690.922334-0.3382072.157024
股票2-0.0642180.9694530.223896-0.795105-2.020499
股票3-0.0392860.046665-0.408812-0.2841451.852426
股票4-1.8116170.588799-1.020581-0.421300-1.068160
股票5-0.8671870.0702690.3624120.5958100.005319
股票6-2.3842850.185213-0.0942010.5597061.156052
股票71.2313960.226930-0.2845441.056286-0.765503
股票81.451832-0.5184950.1155100.5782330.174324
股票91.184461-0.327693-1.4054331.4804700.049133
股票100.8913090.780864-0.858295-1.1544740.127319
  • pd.date_range(start=None,end=None,periods=None,freq=‘B’)

    start : 开始时间
    end : 结束时间
    periods : 时间天数
    freq : 递进单位,默认1天,'B’默认略过周末

date = pd.date_range(start='20231021', end=None, periods=5, freq='B')
date
DatetimeIndex(['2023-10-23', '2023-10-24', '2023-10-25', '2023-10-26','2023-10-27'],dtype='datetime64[ns]', freq='B')
stock_c = pd.DataFrame(stock_change, index=stock_code, columns=date)
stock_c
2023-10-232023-10-242023-10-252023-10-262023-10-27
股票1-1.7961490.0634690.922334-0.3382072.157024
股票2-0.0642180.9694530.223896-0.795105-2.020499
股票3-0.0392860.046665-0.408812-0.2841451.852426
股票4-1.8116170.588799-1.020581-0.421300-1.068160
股票5-0.8671870.0702690.3624120.5958100.005319
股票6-2.3842850.185213-0.0942010.5597061.156052
股票71.2313960.226930-0.2845441.056286-0.765503
股票81.451832-0.5184950.1155100.5782330.174324
股票91.184461-0.327693-1.4054331.4804700.049133
股票100.8913090.780864-0.858295-1.1544740.127319

DataFrame属性

  • 对象.shape 获取形状
  • 对象.index 获取行索引
  • 对象.columns 获取列索引
  • 对象.values 获取值
  • 对象.T 获取行列转换
  • 对象.head() 查看前几行,默认是5
  • 对象.tail() 查看最后几行 默认是5
stock_c.shape
(10, 5)
stock_c.index
Index(['股票1', '股票2', '股票3', '股票4', '股票5', '股票6', '股票7', '股票8', '股票9', '股票10'], dtype='object')
stcok_c.columns
DatetimeIndex(['2023-10-23', '2023-10-24', '2023-10-25', '2023-10-26','2023-10-27'],dtype='datetime64[ns]', freq='B')
stock_c.values
array([[-1.7961491 ,  0.06346948,  0.92233413, -0.33820729,  2.15702396],[-0.06421753,  0.96945298,  0.22389647, -0.79510515, -2.02049945],[-0.03928641,  0.04666511, -0.40881248, -0.28414454,  1.85242648],[-1.81161734,  0.5887991 , -1.02058093, -0.42130023, -1.06816   ],[-0.86718681,  0.07026887,  0.36241195,  0.59581008,  0.00531913],[-2.38428482,  0.18521273, -0.09420118,  0.55970591,  1.15605167],[ 1.23139579,  0.22693018, -0.28454449,  1.05628637, -0.76550258],[ 1.45183169, -0.51849484,  0.11550995,  0.57823283,  0.17432416],[ 1.18446114, -0.3276933 , -1.40543347,  1.48046993,  0.04913251],[ 0.89130874,  0.78086438, -0.85829505, -1.15447368,  0.12731851]])
stock_c.T
股票1股票2股票3股票4股票5股票6股票7股票8股票9股票10
2023-10-23-1.796149-0.064218-0.039286-1.811617-0.867187-2.3842851.2313961.4518321.1844610.891309
2023-10-240.0634690.9694530.0466650.5887990.0702690.1852130.226930-0.518495-0.3276930.780864
2023-10-250.9223340.223896-0.408812-1.0205810.362412-0.094201-0.2845440.115510-1.405433-0.858295
2023-10-26-0.338207-0.795105-0.284145-0.4213000.5958100.5597061.0562860.5782331.480470-1.154474
2023-10-272.157024-2.0204991.852426-1.0681600.0053191.156052-0.7655030.1743240.0491330.127319
stock_c.head()
2023-10-232023-10-242023-10-252023-10-262023-10-27
股票1-1.7961490.0634690.922334-0.3382072.157024
股票2-0.0642180.9694530.223896-0.795105-2.020499
股票3-0.0392860.046665-0.408812-0.2841451.852426
股票4-1.8116170.588799-1.020581-0.421300-1.068160
股票5-0.8671870.0702690.3624120.5958100.005319
stock_c.tail()
2023-10-232023-10-242023-10-252023-10-262023-10-27
股票6-2.3842850.185213-0.0942010.5597061.156052
股票71.2313960.226930-0.2845441.056286-0.765503
股票81.451832-0.5184950.1155100.5782330.174324
股票91.184461-0.327693-1.4054331.4804700.049133
股票100.8913090.780864-0.858295-1.1544740.127319

DataFrame的索引

修改行列的索引值

stock_c.index = [f'股票_{i+1}' for i in range(10)]
## 不能直接索引改变
## stock_c.index[2] = '123'  ## pandas不支持这样的索引
stock_c
2023-10-232023-10-242023-10-252023-10-262023-10-27
股票_1-1.7961490.0634690.922334-0.3382072.157024
股票_2-0.0642180.9694530.223896-0.795105-2.020499
股票_3-0.0392860.046665-0.408812-0.2841451.852426
股票_4-1.8116170.588799-1.020581-0.421300-1.068160
股票_5-0.8671870.0702690.3624120.5958100.005319
股票_6-2.3842850.185213-0.0942010.5597061.156052
股票_71.2313960.226930-0.2845441.056286-0.765503
股票_81.451832-0.5184950.1155100.5782330.174324
股票_91.184461-0.327693-1.4054331.4804700.049133
股票_100.8913090.780864-0.858295-1.1544740.127319

重设索引值

## stock_c.reset_index(drop=True)  当drop=True就会删除之前的索引,为Fasle就不会删除之前的索引
stock_c.reset_index()
index2023-10-23 00:00:002023-10-24 00:00:002023-10-25 00:00:002023-10-26 00:00:002023-10-27 00:00:00
0股票_1-1.7961490.0634690.922334-0.3382072.157024
1股票_2-0.0642180.9694530.223896-0.795105-2.020499
2股票_3-0.0392860.046665-0.408812-0.2841451.852426
3股票_4-1.8116170.588799-1.020581-0.421300-1.068160
4股票_5-0.8671870.0702690.3624120.5958100.005319
5股票_6-2.3842850.185213-0.0942010.5597061.156052
6股票_71.2313960.226930-0.2845441.056286-0.765503
7股票_81.451832-0.5184950.1155100.5782330.174324
8股票_91.184461-0.327693-1.4054331.4804700.049133
9股票_100.8913090.780864-0.858295-1.1544740.127319
stock_c.reset_index(drop=True)
2023-10-232023-10-242023-10-252023-10-262023-10-27
0-1.7961490.0634690.922334-0.3382072.157024
1-0.0642180.9694530.223896-0.795105-2.020499
2-0.0392860.046665-0.408812-0.2841451.852426
3-1.8116170.588799-1.020581-0.421300-1.068160
4-0.8671870.0702690.3624120.5958100.005319
5-2.3842850.185213-0.0942010.5597061.156052
61.2313960.226930-0.2845441.056286-0.765503
71.451832-0.5184950.1155100.5782330.174324
81.184461-0.327693-1.4054331.4804700.049133
90.8913090.780864-0.858295-1.1544740.127319

以某列设置新索引

df = pd.DataFrame({'year':[2021, 2021, 2023, 2024],'month':[1, 2, 3, 4],'sale':[22, 100, 222, 113]})
df
yearmonthsale
02021122
120212100
220233222
320244113
df.index
RangeIndex(start=0, stop=4, step=1)
## set_index(keys=, drop=True)  keys列索引名称或者列索引名称列表 drop表示是否将列索引数据删除
df.set_index(keys=['year'])
monthsale
year
2021122
20212100
20233222
20244113
new_df = df.set_index(keys=['year', 'month'], drop=False)
new_df
yearmonthsale
yearmonth
202112021122
220212100
2023320233222
2024420244113
new_df.index
MultiIndex([(2021, 1),(2021, 2),(2023, 3),(2024, 4)],names=['year', 'month'])

MultiIndex

new_df.index.names
FrozenList(['year', 'month'])
tuples = [('bar', 'one'),('bar', 'two'),('baz', 'one'),('baz', 'two'),('foo', 'one'),('foo', 'two'),('qux', 'one'),('qux', 'two')]
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
index
MultiIndex([('bar', 'one'),('bar', 'two'),('baz', 'one'),('baz', 'two'),('foo', 'one'),('foo', 'two'),('qux', 'one'),('qux', 'two')],names=['first', 'second'])
pd.Series(np.random.randn(8), index=index)
first  second
bar    one      -0.816907two       0.660782
baz    one      -1.032361two      -0.595878
foo    one      -0.658145two      -0.891936
qux    one       0.385722two      -0.192622
dtype: float64
arrays = [
np.array(["bar", "bar", "baz", "baz", "foo", "foo", "qux", "qux"]),
np.array(["one", "two", "one", "two", "one", "two", "one", "two"]),
]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)
df
0123
barone-0.1627902.7991071.0706520.034360
two-0.283814-0.551970-1.270871-0.813390
bazone0.4221661.3801310.5938040.776062
two1.888835-0.176970-0.568067-1.343601
fooone-0.5329141.206831-0.3677050.912403
two-1.576118-0.082882-0.1221761.521598
quxone-0.074543-0.3592370.3097700.895598
two0.9051860.670022-1.549954-0.539559
pd.DataFrame(np.random.randn(8, 4), index=index)
0123
firstsecond
barone-1.208274-0.810972-1.820593-0.833156
two-1.5016570.6838750.923321-0.710930
bazone-0.008496-3.6450992.1257641.406796
two-0.4406050.645926-1.6405361.002207
fooone0.2647130.182264-1.4109300.837404
two0.683733-0.3004261.2813740.440129
quxone-0.179653-0.331090-0.8172770.583263
two-0.305134-0.934428-0.479319-0.179533
  • MultiIndex.from_arrays():传入一个数组列表
  • MultiIndex.from_tuples():传入一个元组数组、
  • MultiIndex.from_product():传入一个交叉的迭代集合
  • MultiIndex.from_frame():传入一个 DataFrame

Serias

  • 对象[flag1][flag2][flag3] 先列后行
  • 对象.loc[] # 先行后列,可以使用切片操作
  • 对象.iloc[] # 先行后列,通过索引去进行索引
new_df['year'][2021][1]  ## 一定是先列后行
2021
df.loc[0:4, 'sale']   ## 先行后列,可以使用切片操作
0     22
1    100
2    222
3    113
Name: sale, dtype: int64
df.iloc[0:3, :5] ## 前3行前5列 先行后列,通过索引去进行索引
yearmonthsale
02021122
120212100
220233222
new_df.iloc[0:3, :5]
yearmonthsale
yearmonth
202112021122
220212100
2023320233222
sr = pd.Series(np.arange(2,10,2), index=['数值{}'.format(i+1) for i in range(4)])
sr
数值1    2
数值2    4
数值3    6
数值4    8
dtype: int32
sr.values
array([2, 4, 6, 8])
sr.index
Index(['数值1', '数值2', '数值3', '数值4'], dtype='object')

索引操作

import numpy as np
import pandas as pd
mydata = np.random.normal(0, 1, (5, 5))
mydata_index = ['index{}'.format(i+1) for i in range(5)]
mydata_col =  ['col{}'.format(i+1) for i in range(5)]
data = pd.DataFrame(mydata, index=mydata_index, columns=mydata_col)
data
col1col2col3col4col5
index10.1789610.849560-0.077123-0.550173-0.821073
index2-0.479774-0.986681-0.9347250.010318-0.736170
index3-0.384807-0.6364850.056328-1.383175-0.451370
index4-0.770427-1.009373-0.283575-0.923803-1.502639
index50.068687-0.3612691.8277310.0348581.239907

直接索引

data['col1']['index1']  ## 先列后行
-0.31201088599026405

按名字索引

data.loc['index1']['col1']
-0.31201088599026405
data.loc['index1', 'col1']
-0.31201088599026405
data.loc[['index1', 'index2'], 'col1']
index1    0.178961
index2   -0.479774
Name: col1, dtype: float64

按数值索引

data.iloc[1, 0]
-0.2269501796329433
data.iloc[:4, :1]
col1
index10.178961
index2-0.479774
index3-0.384807
index4-0.770427

赋值操作

data['col1'] = 0.01
data
col1col2col3col4col5
index10.010.849560-0.077123-0.550173-0.821073
index20.01-0.986681-0.9347250.010318-0.736170
index30.01-0.6364850.056328-1.383175-0.451370
index40.01-1.009373-0.283575-0.923803-1.502639
index50.01-0.3612691.8277310.0348581.239907
data.col1 = 0.02
data
col1col2col3col4col5
index10.020.849560-0.077123-0.550173-0.821073
index20.02-0.986681-0.9347250.010318-0.736170
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907
data.col1.index1 = 0.1
data
col1col2col3col4col5
index10.100.849560-0.077123-0.550173-0.821073
index20.02-0.986681-0.9347250.010318-0.736170
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907
data['col1']['index2'] = 0.3
data
col1col2col3col4col5
index10.100.849560-0.077123-0.550173-0.821073
index20.30-0.986681-0.9347250.010318-0.736170
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907

排序

对内容排序

  • 对象.sort_values(by=, key=, ascending=) 单个键或者多个键进行排序,默认升序 True升序 False降序
data.sort_values(by=['col1'], ascending=False)
col1col2col3col4col5
index20.30-0.986681-0.9347250.010318-0.736170
index10.100.849560-0.077123-0.550173-0.821073
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907
data.sort_values(by=['col1', 'col2'], ascending=False)
col1col2col3col4col5
index20.30-0.986681-0.9347250.010318-0.736170
index10.100.849560-0.077123-0.550173-0.821073
index50.02-0.3612691.8277310.0348581.239907
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
sr = data['col1']  ## 对serias进行排序
sr
index1    0.10
index2    0.30
index3    0.02
index4    0.02
index5    0.02
Name: col1, dtype: float64
sr.sort_values()
index3    0.02
index4    0.02
index5    0.02
index1    0.10
index2    0.30
Name: col1, dtype: float64

按索引排序

  • 对象.sort_index()
data.sort_index()
col1col2col3col4col5
index10.100.849560-0.077123-0.550173-0.821073
index20.30-0.986681-0.9347250.010318-0.736170
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907
sr.sort_index()
index1    0.10
index2    0.30
index3    0.02
index4    0.02
index5    0.02
Name: col1, dtype: float64

DataFrame的运算

算术运算

data.col1 + 2
index1    2.10
index2    2.30
index3    2.02
index4    2.02
index5    2.02
Name: col1, dtype: float64
data.col1.add(3)
index1    3.10
index2    3.30
index3    3.02
index4    3.02
index5    3.02
Name: col1, dtype: float64
data.sub(10).head(2)  ## data - 10
col1col2col3col4col5
index1-9.9-9.150440-10.077123-10.550173-10.821073
index2-9.7-10.986681-10.934725-9.989682-10.736170
data.col1.sub(data.col2).head(3)
index1   -0.749560
index2    1.286681
index3    0.656485
dtype: float64

逻辑运算

逻辑运算符号 < > | &
## 筛选col1的数据大于0.1的
data.col1 > 0.1
index1    False
index2     True
index3    False
index4    False
index5    False
Name: col1, dtype: bool
data[data.col1 > 0.1]
col1col2col3col4col5
index20.3-0.986681-0.9347250.010318-0.73617
data[(data.col1 < 0.1) & (data.col2 < 0.1)]
col1col2col3col4col5
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907
逻辑运算函数 query() isin()
## 对象.query(expr) expr: 查询的字符串
data.query('col1 < 0.1 & col2 < 0.1')
col1col2col3col4col5
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907
## 对象.isin(values) values数据列表 判断数据是否等于列表中的值
data[data.col1.isin([0.02, 0.01])]
col1col2col3col4col5
index30.02-0.6364850.056328-1.383175-0.451370
index40.02-1.009373-0.283575-0.923803-1.502639
index50.02-0.3612691.8277310.0348581.239907

统计运算

  • 统计函数:count、mean、std、min、max、var、prod、mode、abs、idmax、idmin
  • 上面的idmax、idmin、表示获取最小值最大值的位置 和numpy的argmax、argmin函数是类似的
  • 对象.describe() 一次性的获取平均值、标准差、最大值、最小值等值
  • 累计统计函数 cumsum、cummax、cummin、cumprod 分别是计算n个数的和、最大值、最小值、积
data.max()
col1    0.300000
col2    0.849560
col3    1.827731
col4    0.034858
col5    1.239907
dtype: float64
data.describe()
col1col2col3col4col5
count5.0000005.0000005.0000005.0000005.000000
mean0.092000-0.4288500.117727-0.562395-0.454269
std0.1213260.7632481.0289010.6101551.022660
min0.020000-1.009373-0.934725-1.383175-1.502639
25%0.020000-0.986681-0.283575-0.923803-0.821073
50%0.020000-0.636485-0.077123-0.550173-0.736170
75%0.100000-0.3612690.0563280.010318-0.451370
max0.3000000.8495601.8277310.0348581.239907
data.col1.cumsum()
index1    0.10
index2    0.40
index3    0.42
index4    0.44
index5    0.46
Name: col1, dtype: float64
data.col1.cumsum().plot()


在这里插入图片描述

自定义运算

  • apply(func, axis=0)

func:自定义函数
axis=0:默认是列,axis=1表示进行行计算

# 计算col1和col2列最大值减去最小值的值
data[['col1', 'col2']].apply(lambda x: x.max() - x.min(), axis=0)
col1    0.280000
col2    1.858932
dtype: float64

Pandas画图

  • Pandas.DataFrame.plot(x=None, y=None, kind=‘line’)
    • line折线图 bar柱状图 barh水平柱状图 hist直方图 pie饼图 scatter散点图
  • Pandas.Serias.plot
import pandas as pd
import numpy as np
mydata = np.random.normal(0, 1, (5, 5))
mydata_index = ['index{}'.format(i+1) for i in range(5)]
mydata_col =  ['col{}'.format(i+1) for i in range(5)]
data = pd.DataFrame(mydata, index=mydata_index, columns=mydata_col)
data
col1col2col3col4col5
index10.7067401.059931-0.2909750.4800270.869103
index2-0.4610892.2782850.118369-0.141536-1.054914
index30.871724-1.184708-0.729994-0.2911180.606099
index4-0.300855-0.784571-1.8159730.7914390.861675
index51.3804191.6757370.4000700.1302810.501257
data.plot()


在这里插入图片描述

data.plot(x='col1', y='col2', kind='barh')


在这里插入图片描述

scv文件读取与存储

pandas.read_csv(filepath_or_buffer, sep=‘,’, header=‘infer’, names=None, usecols=[])

  • DataFrame.to_csv(path_or_buf=None, sep=‘,’, na_rep=‘’, index=False, header=True, mode=‘w’, encoding=None)
    • path_or_buf:写入CSV文件的路径或文件对象
    • sep:列分隔符,默认为逗
    • na_rep:缺失值的表示,默认为空字
    • index:是否写入行索引,默认为 False
    • header:是否写入列名,默认为True
    • mode:写入模式 默认是w重写,还有a追加模式
read_data = pd.read_csv('E:/Project/PyCharm_Projects/pandas_test/read.csv', encoding='GBK')
read_data
NameAge
0李白21
1杜甫32
2孟浩然34
data = {'Name': ['Alice', 'Bob', 'Carol'],'Age': [25, 30, 35]}
df = pd.DataFrame(data)
df.to_csv('E:/Project/PyCharm_Projects/pandas_test/output.csv', index=False, mode='a', header=False)
df_read = pd.read_csv('E:/Project/PyCharm_Projects/pandas_test/output.csv')
df_read
NameAge
0Alice25
1Bob30
2Carol35
3Alice25
4Bob30
5Carol35

hdf5文件读取与存储

  • pandas.read_hdf(path_or_buf, key=None, **kwargs)
    • path_or_buf 文件路径
    • key:读取的键
    • mode:打开模式
    • return Theseselected objects
  • DataFrame.to_hdf(path_or_buf, key, **kwargs)
  • hdf5是使用键值对来存储数据的,他也是可以存储三维数据的
  • 跨平台、支持压缩、节省空间

json文件读取与存储

  • pandas.read_json(path_or_buf=None, orient=None, type=‘frame’, lines=‘False’)

    • 将json格式数据转换为默认的Pandas DataFrame格式的数据、
    • orient:一般选择records
    • lines:是否把每行作为一个json
  • DataFrame.to_json(path_or_buf=None, orient=None, lines=‘False’)

总结

  • Pandas基础数据处理
  • Pandas介绍:
    • 面板数据 数据处理工具 便捷的数据处理能力
    • 继承了Numpy和matplotlib,读取文件方便
    • Series:一维数据 DataFrame多维数据
    • Series属性:index values
    • DataFrame属性:shape、index、columns、values、T
    • DataFrame常用方法:head() tail()
    • Multiindex,多维数据存储方式
  • Pandas基本操作
    • 索引操作:直接索引(先列后行)、按名字索引loc、按数字索引iloc
    • 赋值操作
    • 排序操作:sort_values() sort_index()
  • Pandas运算:
    • 算术运算:
    • 逻辑运算:逻辑运算符 & 布尔索引 query() isin()
    • 统计运算:describe()、min、max、std、idmax、idmin、cumsum、cummax
    • 自定义运算:apply()
  • Pandas画图:
    • df.plot()
    • sr.plot()
  • PandasIO操作:
    • csv:pd.read_csv(path, names, usecols) pd.to_csv(path, header, mode, index)
    • hdf5:pd.read_hdf5(path, key) pd.to_hdf5(path, key)
    • json:pd.read_json(path, records, lines) pd.to_json(path, records, lines)
      =‘w’, encoding=None)
    • path_or_buf:写入CSV文件的路径或文件对象
    • sep:列分隔符,默认为逗
    • na_rep:缺失值的表示,默认为空字
    • index:是否写入行索引,默认为 False
    • header:是否写入列名,默认为True
    • mode:写入模式 默认是w重写,还有a追加模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录 Day26 贪心 01 全集 LeetCode455 分发饼干 LeetCodeT346摆动序列 LeetCdoe T53 最大子数组和

前言:贪心无套路 本质: 局部最优去推导全局最优 两个极端 贪心算法的难度一般要么特别简单,要么特别困难,所以我们只能多见识多做题,记住无需数学证明,因为两道贪心基本上毫无关系,我们只需要去思考局部最优即可 贪心的小例子 比如有一堆钞票&#xff0c;你可以拿走十张&#x…

SpringBoot AOP + Redis 延时双删功能实战

一、业务场景 在多线程并发情况下&#xff0c;假设有两个数据库修改请求&#xff0c;为保证数据库与redis的数据一致性&#xff0c;修改请求的实现中需要修改数据库后&#xff0c;级联修改Redis中的数据。 请求一&#xff1a;A修改数据库数据 B修改Redis数据 请求二&#xff…

谷歌真的不喜欢 Node.js ?

有人在 Quora 上提问&#xff0c;为什么谷歌不喜欢 Node.js 呢&#xff0c;Google 的 UX 工程师和来自 Node.js 团队的开发者分别回答了他们对这个问题的看法&#xff0c;对于编程语言来说&#xff0c;每一门语言都有它自己的优势&#xff0c;重要的是如何用它去解决问题。 谷…

驱动开发LED灯绑定设备文件

头文件 #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t;#define PHY_LED1_ADDR 0x50006000 #define PHY_LED2_ADDR 0x50007000 #defin…

【软考-中级】系统集成项目管理工程师-项目收尾管理历年案例

持续更新。。。。。。。。。。。。。。。 目录 2017 下 试题三(17分)背诵整理1. 项目总结会议一般讨论的内容2. 系统文档验收所涉及的文档都有哪些 系列文章 2017 下 试题三(17分) 阅读下列说明&#xff0c;回答问题 1至问题 4&#xff0c;将解答填入答题纸的对应栏内     …

大二第三周总结(算法+生活)

算法&#xff1a; 题目&#xff1a;有效的括号 这个题目也是做过很多回了。主要就是数据结构中”栈“的应用&#xff0c;先进后出。 解题思路&#xff1a; 1.创建 Map 哈希表形成键值对映射 2.进行遍历字符串 在遍历过程中 如果 遍历到的字符c 是左括号&#xff0c;则入栈 pu…

基于PHP的宠物爱好者交流平台管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

Mysql第三篇---响应太慢?数据库卡顿?如何优化?

Mysql第三篇—响应太慢&#xff1f;数据库卡顿&#xff1f;如何优化&#xff1f; 统计SQL的查询成本&#xff1a;last_query_cost 一条SQL查询语句在执行前需要确定查询执行计划&#xff0c;如果存在多种执行计划的话&#xff0c;MySQL会计算每个执行计划所需要的成本&#x…

CDN+Nginx反向代理来隐藏c2地址

思路&#xff1a;通过借助CDN和Nginx反向代理和HTTPS来隐藏真实c2服务器Nginx反向代理&#xff1a;通过Nginx对外部流量转发到本地&#xff0c;再设置防火墙只允许localhost访问cs端口达到IP白名单的效果 准备 在这个实验环境中&#xff0c;我们需要准备服务器两台(一台服务端…

day40

今日内容概要 针对记录的SQL语句 配置文件的介绍 存储引擎的使用(存储的方式) 数据类型(重点) 整型 浮点型 字符串 日期 枚举 针对记录的sql语句 针对库的增删改查&#xff08;文件夹&#xff09; 1.创建库 create databases db1; # 设置库的默认编码 create databa…

01-React入门

React概述 react是什么&#xff1f; React用于构建用户界面的JS库。是一个将数据渲染为HTML视图的开源JS库。 为什么学&#xff1f; 1.原生JS操作DOM繁琐&#xff0c;效率低 2.使用JS直接操作DOM,浏览器会进行大量的重绘重排 3.原生JS没有组件化编码方案&#xff0c;代码…

【Leetcode】 213. 打家劫舍 II ?

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈&#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚…

sql server2014如何添加多个实例 | 以及如何删除多个实例中的单个实例

标题sql server2014如何添加多个实例 前提&#xff08;已安装sql server2014 且已有默认实例MSSQLSERVER&#xff09; 添加新的实例 其实就是根据安装步骤再安装一次&#xff08;区别在过程中说明&#xff09; 双击安装 选择“全新独立安装或添加现有功能” 然后下一步下一…

Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

介绍 Apache Shiro是一款开源安全框架&#xff0c;提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用&#xff0c;同时也能提供健壮的安全性。 版本 Apache Shiro 1.2.4及以前版本中 原理 不安全的配置 默认账户在里面 Apache Shiro 1.2.4及以前版本中&#x…

Python 数组和列表:创建、访问、添加和删除数组元素

Python 没有内置支持数组&#xff0c;但可以使用 Python 列表来代替。 数组 本页将向您展示如何使用列表作为数组&#xff0c;但要在 Python 中使用数组&#xff0c;您需要导入一个库&#xff0c;比如 NumPy 库。数组用于在一个变量中存储多个值&#xff1a; 示例&#xff0…

重生奇迹mu宠物带来不一样的体验

重生奇迹mu宠物有什么作用&#xff1f; 全新版本中更是推出了各种宠物&#xff0c;在玩游戏时还可以带着宠物&#xff0c;一起疯狂的刷怪等等&#xff0c;可以为玩家带来非常不错的游戏体验&#xff0c;那么下面就来给大家说说各种宠物适合做什么事情。 1、强化恶魔适合刷怪 …

java头歌-java中的异常

文章目录 第一关第二关第三关第四关 第一关 第二关 题目要求&#xff1a; public static void main(String[] args) {Scanner sc new Scanner(System.in);try {int num1 sc.nextInt();int num2 sc.nextInt();/********* Begin *********/System.out.println(num1/num2);}…

CNN——卷积神经网络

文章目录 多层感知机&#xff08;MLP&#xff0c;Multilayer Perceptron&#xff09;神经网络定义MLP与神经网络的异同相同之处&#xff1a;不同之处&#xff1a;总结 为什么要使用神经网络CNN卷积层&#xff1a;池化层&#xff1a;全连接层&#xff1a; 卷积神经网络的优势pad…

Python---while循环的执行流程 解释

使用Debug调试工具&#xff0c;查看while循环的运行流程 代码 # ① 初始化计数器 i 1 # ② 编写循环条件&#xff08;判断计数器是否达到了100&#xff09; while i < 100:print(f{i 1}、老婆大人&#xff0c;我错了)# ③ 在循环体内部更新计数器i 1 ① 代码都是顺序执行…